2013-03-15 86 views
6

我发现了很多关于SoapClient希望你在设置属性的请求的解释,但我根本找不到读取属性的方式。PHP SoapClient和阅读属性

例如,我的SoapClient的响应在它具有这些元素:

... 
<ns:index> 
    <ns:uid expdate="2013-09-03 14:30:00">JOWtest002</ns:uid> 
    <ns:uid expdate="2013-02-07 15:00:00">JOWtest003</ns:uid> 
</ns:index> 
... 

然而, “EXPDATE” 属性被从未附在 “索引” stdClass的

["index"]=> 
    object(stdClass)#80 (1) { 
    ["uid"]=> 
    array(2) { 
    [0]=> 
     string(10) "JOWtest002" 
    [1]=> 
     string(10) "JOWtest003" 
    } 
} 

我已经尝试使用一个SoapClient类图将其绑定到一个对象,但不幸的是,WSDL没有将“uid”元素定义为complexType,因此它也不映射这些属性。将“索引”本身绑定到类不起作用。

有什么建议吗?我真的想避免通过将XML分配给SimpleXML或DOMDocument来解析XML。

+0

会使用命名空间帮助你吗? http://stackoverflow.com/q/8525020/1513471 – 2013-03-15 16:37:35

+0

谢谢。你能澄清为什么命名空间会成为一个问题吗? WSDL定义了通常的SOAP包装名称空间,而且我们使用的命名空间不同于我的示例中所声明的名称空间。 – voodoodrul 2013-03-15 17:28:42

+0

因为命名空间指向xml属性,所以我建议命名空间。 – 2013-03-17 15:33:05

回答

0

我在XML上工作很多,这真是一件苦差事。根据我的经验,如果您打算使用一个在处理SOAP响应方面编写出色封装的库,可以实现在此link处找到的Saber的XML库。

发送和阅读回复真的很容易。该文档非常好,他们的网站上有很多示例可帮助您有效地使用该库。

+0

只是一个有用的图书馆,有很大的权力和可扩展性,我没有任何隶属于。如果您想使用PHP的SOAP客户端并重新构建另一个库,那么请成为我的客户。 我用它分配所以只是想我会建议它。 – TesterT 2017-08-28 14:12:21

+1

好吧。将来会尝试让它听起来不像“传单一样”,谢谢你的反馈 – TesterT 2017-08-28 14:19:54