>백엔드 개발 >PHP 튜토리얼 >SimpleXML을 사용하여 네임스페이스 접두사가 포함된 SOAP XML을 효율적으로 구문 분석하는 방법은 무엇입니까?

SimpleXML을 사용하여 네임스페이스 접두사가 포함된 SOAP XML을 효율적으로 구문 분석하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-28 09:22:16477검색

How to Efficiently Parse SOAP XML with Namespace Prefixes Using SimpleXML?

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 객체에는 아래에 중첩된 원하는 데이터가 포함됩니다. 및 <결제>. 이 기술을 사용하면 필요에 따라 구문 분석된 SOAP XML 데이터를 편리하게 조작하고 액세스할 수 있습니다.

위 내용은 SimpleXML을 사용하여 네임스페이스 접두사가 포함된 SOAP XML을 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.