我正在使用 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
.
手动解析结果的问题一目了然。我可以SimpleXmlElement
使用来自的字符串创建一个新的$result->OperationResult->any
,但如果 WSDL 更改,它将不起作用。