2013-03-15 6 views
6

ich zahlreiche Erklärungen über gefunden haben, wie Soapclient Sie erwartet zu Attribute in einer Anfrage-Set, aber ich kann einfach nicht einen Weg zu lesen Attribute aus einer Antwort finden.PHP Soapclient und Lesen Attribute

Zum Beispiel meiner Soapclient Antwort hat diese Elemente darin:

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

Doch die "ExpDate" -Attribut nie auf den "index" stdClass angebracht ist

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

Ich habe versucht, mit eine SoapClient-Klassenzuordnung, um diese an ein Objekt zu binden, aber leider definiert die WSDL das "uid" -Element nicht als complexType, daher werden auch die Attribute nicht zugeordnet. Binding "Index" selbst zu einer Klasse funktioniert nicht.

Irgendwelche Vorschläge? Ich möchte wirklich vermeiden, das XML zu analysieren, indem ich es SimpleXML oder DOMDocument gebe.

+0

Würde die Verwendung von Namespace Ihnen helfen? http://StackOverflow.com/q/8525020/1513471 –

+0

Danke. Können Sie klären, warum der Namespace ein Problem darstellt? Die WSDL definiert die üblichen SOAP-Wrapping-Namespaces und wir verwenden einen anderen Namespace als in meinem Beispiel hier deklariert. – voodoodrul

+0

Da Namespace auf die XML-Attribute verweist, empfehle ich Namespace. –

Antwort

0

Ich arbeite ziemlich viel mit XML und es ist eine echte Pflicht. Meiner Erfahrung nach, und wenn Sie bereit sind, eine Bibliothek zu verwenden, die einen ausgezeichneten Wrapper für die Behandlung einer SOAP-Antwort geschrieben hat, wäre es die XML-Bibliothek von Sabre zu implementieren, die unter dieser link gefunden wurde.

Es ist wirklich einfach, Antworten zu senden und zu lesen. Die Dokumentation ist wirklich gut und sie haben viele Beispiele auf ihrer Website, die Ihnen helfen werden, die Bibliothek effektiv zu nutzen.

+0

Nur eine hilfreiche Bibliothek, die ziemlich viel Macht und Erweiterbarkeit hat, mit der ich in keiner Weise verbunden bin. Wenn Sie den SOAP-Client von PHP verwenden und eine andere Bibliothek neu erstellen möchten, dann seien Sie mein Gast. Ich benutze es allot also dachte nur, ich würde es vorschlagen. – TesterT

+1

Ok, fair genug. Ich werde versuchen, es in der Zukunft nicht "Flugblattartig" klingen zu lassen, danke für Feedback – TesterT