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
Freigeben: 2024-11-28 07:31:10
Original
1005 Leute haben es durchsucht

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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>
Nach dem Login kopieren



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);
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage