SOAP XML을 구문 분석하는 방법: SimpleXML에 대한 네임스페이스 접두사 제거
SOAP XML 문서를 구문 분석할 때 네임스페이스 접두사는 simplexml과 같은 라이브러리에 문제를 일으킬 수 있습니다. . 이 문제는 다음과 유사한 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> <!-- Payment data --> </payment> </PaymentNotification> </soap:Body> </soap:Envelope>
다음 코드와 같이 simplexml을 사용하여 이러한 XML 문자열을 구문 분석하려고 하면 종종 빈 결과가 발생합니다.
$xml = simplexml_load_string($soap_response); $xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/'); foreach ($xml->xpath('//payment') as $item) { print_r($item); }
이 문제를 해결하고 네임스페이스 접두사가 있는 SOAP XML을 성공적으로 구문 분석하려면 간단하면서도 효과적인 접근 방식은 XML을 simplexml에 전달하기 전에 이러한 접두사를 제거하는 것입니다. 수행 방법은 다음과 같습니다.
$your_xml_response = '<Your XML here>'; $clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $your_xml_response); $xml = simplexml_load_string($clean_xml);
네임스페이스 접두사를 제거하면 simplexml에서 XML을 구문 분석하기가 더 쉬워집니다. 결과 SimpleXMLElement 객체에는
위 내용은 SimpleXML을 사용하여 네임스페이스 접두사가 포함된 SOAP XML을 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!