2010-05-05 7 views
4

J'essaie de convertir une réponse SOAP en XML.Réponse SOAP à XML avec SimpleXML

SOAP a une enveloppe et un corps

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 

Lorsque je tente de convertir

$responseXML = simplexml_load_string($string); 

Je reçois

object(SimpleXMLElement)#20 (0) { } 

Si je modifier les $string comme soap:Envelope et soap:Body je peux obtenir le XML.

Qu'est-ce qui ne va pas avec :? Impossible d'obtenir le XML.

J'espère que c'est clair. N'importe qui?

+0

SOAP _is_ XML .. –

Répondre

9

Un message SOAP est déjà XML. Le problème est qu'il a des espaces de noms, donc vous devez y accéder différemment. (La partie avant les deux points est l'identificateur de l'espace de nom.)

Here (google cached copy) est un exemple d'utilisation d'espaces de noms avec SimpleXML.
Here est un exemple spécifique de lecture de messages SOAP.

+1

Merci je n'ai pas de mots! – ntan

1

SimpleXML nécessite un traitement spécial pour XML des espaces de noms (ref.)

+0

Totalement clair.Mais si je veux accéder par exemple xml-> soap: Enveloppe-> soap: Body-> item1-> item2 – ntan

+0

parce que "savon:" n'est pas lié à un espace de noms dans cet exemple. Notez que le préfixe d'espace de nom ne doit pas correspondre, mais l'espace de nom lui-même. – Dormilich

Questions connexes