【发布时间】:2013-08-03 22:06:32
【问题描述】:
我正在使用 PHP SOAP 扩展 (SoapClient) 来调用远程操作。它的 WSDL 类型如下:
<s:element name="OperationResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="OperationResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
据我所知,类型是“任何东西”。调用结果转化为嵌套的stdClass对象,不好处理:
object(stdClass)[3]
public 'OperationResult' =>
object(stdClass)[4]
public 'any' => string 'xml string here...'
(这实际上是由 SOAP 扩展本身执行的)
我如何控制这个对象的创建方式?我尝试将 classmap 选项传递给 SOAP 客户端,但它不起作用:我得到了实例,但属性是 null。
手动解析结果的问题一目了然。我可以使用来自$result->OperationResult->any 的字符串创建一个新的SimpleXmlElement,但如果WSDL 发生更改,它将无法工作。
【问题讨论】:
标签: php xml soap php-5.3 soap-client