Problemübersicht:
PHPs simplexml_load_string() kann eine SOAP-XML-Antwort nicht analysieren und die „Zahlung“ nicht abrufen. Element.
Eine wirksame Methode zur Behebung dieses Problems besteht darin, Namespace-Präfixe aus der XML-Antwort zu entfernen, bevor Sie simplexml_load_string() verwenden. So geht's:
$your_xml_response = '<SOAP XML here>'; $clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response); $xml = simplexml_load_string($clean_xml);
Für die bereitgestellte SOAP-XML-Antwort:
<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> <uniqueReference>ESDEUR11039872</uniqueReference> <epacsReference>74348dc0-cbf0-df11-b725-001ec9e61285</epacsReference> <postingDate>2010-11-15T15:19:45</postingDate> <bankCurrency>EUR</bankCurrency> <bankAmount>1.00</bankAmount> <appliedCurrency>EUR</appliedCurrency> <appliedAmount>1.00</appliedAmount> <countryCode>ES</countryCode> <bankInformation>Sean Wood</bankInformation> <merchantReference>ESDEUR11039872</merchantReference> </payment> </PaymentNotification> </soap:Body> </soap:Envelope>
Code ausführen:
$your_xml_response = '<!-- Your SOAP XML -->'; $clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response); $xml = simplexml_load_string($clean_xml); foreach ($xml->Body->PaymentNotification->payment as $item) { print_r($item); }
Dadurch wird das Element „Zahlung“ als SimpleXMLElement-Objekt ausgegeben und ermöglicht den Zugriff auf sein untergeordnetes Element Elemente.
Das obige ist der detaillierte Inhalt vonWie rufe ich das Element „Payment' aus einer SOAP-XML-Antwort mit PHP ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!