Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich SOAP-XML-Antworten in PHP effizient analysieren, um Probleme mit Namespace-Präfixen zu vermeiden?

Wie kann ich SOAP-XML-Antworten in PHP effizient analysieren, um Probleme mit Namespace-Präfixen zu vermeiden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-28 07:31:101058Durchsuche

How Can I Efficiently Parse SOAP XML Responses in PHP to Avoid Namespace Prefix Issues?

SOAP-XML analysieren: Eine praktische Lösung

Die Aufgabe, SOAP-XML-Antworten zu analysieren, kann aufgrund des Vorhandenseins von Namespace-Präfixen entmutigend sein. Dies kann zu unerwarteten Ergebnissen führen, wenn integrierte PHP-Funktionen wie simpleXML verwendet werden.

Die Herausforderung:

Das Parsen von SOAP-XML erfordert die Adressierung von Namespace-Präfixen, die das Gewünschte verschleiern können Elemente. Betrachten Sie die folgende SOAP-XML-Antwort:

<br><?xml version="1.0" binding="utf-8"?><br><soap:Envelope xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><br> <soap:Body></p>
<pre class="brush:php;toolbar:false"><PaymentNotification xmlns="http://apilistener.envoyservices.com">
  <payment>
    <uniqueReference>ESDEUR11039872</uniqueReference>      
    <epacsReference>74348dc0-cbf0-df11-b725-001ec9e61285</epacsReference>
    <postingDate>2010-11-15T15:19:45</postingDate>
    [Additional payment information]
  </payment>
</PaymentNotification>



Die Lösung:

Eine effektive Möglichkeit, das SOAP-XML-Parsing zu vereinfachen besteht darin, die Namespace-Präfixe zu eliminieren. Dies kann erreicht werden, indem das XML geändert wird, bevor es durch simpleXML geleitet wird:

$xml_response = '<SOAP XML here>';
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $xml_response);
$xml = simplexml_load_string($clean_xml);

Jetzt können Sie auf das gewünschte „Zahlungs“-Element zugreifen, ohne auf Probleme durch Namespace-Präfixe zu stoßen:

foreach ($xml->PaymentNotification->payment as $item) {
  print_r($item);
}

Dieser unkomplizierte Ansatz gibt das Element „Zahlung“ mit allen seinen untergeordneten Elementen und ihren Werten zurück.

Das obige ist der detaillierte Inhalt vonWie kann ich SOAP-XML-Antworten in PHP effizient analysieren, um Probleme mit Namespace-Präfixen zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn