使用Zend_Soap_Client和stdObject创建带有元素属性的SOAP请求


Create SOAP request with element attribute using Zend_Soap_Client and stdObject

我正在调用一个服务女巫,在许多其他参数中需要一个条目,如(取自soapUI):

  <v110:ReadWorkerRequest>
     <v111:Key v111:type="INITIALS">RKM</v111:Key>
  </v110:ReadWorkerRequest>

如何让Zend_Soap_Client在Key元素中发送type-属性?

由于这只是一个相当大的服务的一部分,我一直在创建类来创建数据结构,如:

class Key {
  public $_ = 'RKM;
  public $type = 'INITIALS';
}
class Body {
  public $ReadWorkerRequest;
  public function __construct() {
    $this->ReadWorkerRequest = new Key();
  }
}

然而,由于PHP失败,我甚至没有发送请求,告诉我:"SOAP-ERROR: Encoding: object hasn't 'Key' property"

所以我的问题是,我如何创建一个对象结构,可能与子部分创建为一个数组,这将尊重?

或者对象结构是否正确,并且我需要使用classmap或SoapVar(我尝试了一些组合,但没有成功)

节日快乐,给那些有假期的人!: -)

我自己花了很多时间试图解决这个问题,但我能想到的最好的方法是使用XSD_ANYXML hack,例如:

$this->ReadWorkerRequest = new SoapVar( '<v111:Key v111:type="INITIALS">RKM</v111:Key>', XSD_ANYXML );

这是一个相当讨厌的黑客。希望有人能提供更好的解决方案。