문제 개요:
PHP simplexml_load_string()이 SOAP XML 응답을 구문 분석하지 못하고 '결제' 요소를 검색합니다.
이 문제를 해결하는 효과적인 방법 중 하나는 simplexml_load_string()을 사용하기 전에 XML 응답에서 네임스페이스 접두사를 제거하는 것입니다. 수행 방법은 다음과 같습니다.
$your_xml_response = '<SOAP XML here>'; $clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response); $xml = simplexml_load_string($clean_xml);
제공된 SOAP XML 응답의 경우:
<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>
코드 실행:
$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); }
'결제' 요소가 SimpleXMLElement 객체로 출력됩니다. 하위 요소에 대한 액세스를 제공합니다.
위 내용은 PHP를 사용하여 SOAP XML 응답에서 \'결제\' 요소를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!