Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man SOAP-XML mit Namespace-Präfixen mithilfe von SimpleXML effizient analysieren?
So analysieren Sie SOAP-XML: Entfernen von Namespace-Präfixen für SimpleXML
Beim Parsen von SOAP-XML-Dokumenten können Namespace-Präfixe für Bibliotheken wie simplexml eine Herausforderung darstellen . Dieses Problem tritt auf, wenn auf XML-Antworten ähnlich der folgenden gestoßen wird:
<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/"> <soap:Body> <PaymentNotification xmlns="http://apilistener.envoyservices.com"> <payment> <!-- Payment data --> </payment> </PaymentNotification> </soap:Body> </soap:Envelope>
Versuche, eine solche XML-Zeichenfolge mit simplexml zu analysieren, wie z. B. den folgenden Code, führen häufig zu leeren Ergebnissen:
$xml = simplexml_load_string($soap_response); $xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/'); foreach ($xml->xpath('//payment') as $item) { print_r($item); }
Um dieses Problem zu beheben und SOAP-XML mit Namespace-Präfixen erfolgreich zu analysieren, besteht ein einfacher, aber effektiver Ansatz darin, diese Präfixe zu entfernen, bevor das XML an simplexml übergeben wird. So geht's:
$your_xml_response = '<Your XML here>'; $clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response); $xml = simplexml_load_string($clean_xml);
Durch das Entfernen der Namespace-Präfixe wird das XML für simplexml einfacher zu analysieren. Das resultierende SimpleXMLElement-Objekt würde die gewünschten Daten enthalten, verschachtelt unter
Das obige ist der detaillierte Inhalt vonWie kann man SOAP-XML mit Namespace-Präfixen mithilfe von SimpleXML effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!