2013-03-15 17 views
6

Znalazłem liczne wyjaśnienia dotyczące sposobu SoapClient spodziewa się ustawić atrybutów w żądaniu, ale ja po prostu nie może znaleźć sposób na przeczytać atrybuty z odpowiedzią.PHP SoapClient i odczyt atrybutów

Na przykład, mój SoapClient odpowiedź ma te elementy w nim:

... 
<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> 
... 

Jednak "expdate" atrybut nie jest dołączony do "indeksu" stdClass

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

Próbowałem, używając mapa klasy SoapClient, aby powiązać to z obiektem, ale niestety, WSDL nie definiuje elementu "uid" jako complexType, więc nie mapuje atrybutów. Wiązanie "indeksu" z klasą nie działa.

Wszelkie sugestie? Naprawdę chcę uniknąć analizowania XML przez podanie SimpleXML lub DOMDocument.

+0

Czy korzystanie z przestrzeni nazw byłoby pomocne? http://stackoverflow.com/q/8525020/1513471 –

+0

Dziękuję. Czy możesz wyjaśnić, dlaczego przestrzeń nazw byłaby problemem? WSDL definiuje zwykłe przestrzenie nazw pakowania SOAP i używamy innej przestrzeni nazw niż zadeklarowano w moim przykładzie tutaj. – voodoodrul

+0

Ponieważ przestrzeń nazw wskazuje na atrybuty xml, dlatego sugeruję przestrzeń nazw. –

Odpowiedz

0

Pracuję trochę z XMLem i to jest prawdziwa praca. Z mojego doświadczenia wynika, że ​​jeśli twoja otwarta na używanie biblioteki, która napisała doskonałe opakowanie do obsługi odpowiedzi SOAP, to zaimplementuje bibliotekę XML Sabre znalezioną pod tym link.

Bardzo łatwo jest wysyłać i czytać odpowiedzi. Dokumentacja jest naprawdę dobra i ma wiele przykładów na swojej stronie, które pomogą ci efektywnie korzystać z biblioteki.

+0

Po prostu przydatna biblioteka, która ma sporo mocy i rozciągliwości, do której nie jestem w żaden sposób związany. Jeśli chciałbyś użyć klienta SOAP PHP i ponownie zbudować inną bibliotekę, to bądź moim gościem. Używam tego wszystkiego, więc pomyślałem, że to proponuję. – TesterT

+1

OK, wystarczy. Postaram się, aby w przyszłości nie brzmiała "jak ulotka", dzięki za opinie – TesterT

Powiązane problemy