2013-03-15 117 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