>  기사  >  백엔드 개발  >  SimpleXML을 사용하여 여러 네임스페이스가 있는 XML을 구문 분석하는 방법은 무엇입니까?

SimpleXML을 사용하여 여러 네임스페이스가 있는 XML을 구문 분석하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-05 18:52:02386검색

How to Parse XML with Multiple Namespaces Using SimpleXML?

SimpleXML을 사용하여 여러 네임스페이스가 있는 XML 구문 분석

SimpleXML을 사용할 때 여러 네임스페이스가 있는 XML 문서를 구문 분석하는 것이 문제가 됩니다. 이러한 문서를 성공적으로 구문 분석하려면 네임스페이스 선언을 처리해야 합니다.

제공된 XML 문서에는 여러 네임스페이스가 있습니다.

<code class="xml"><soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
      ...
    </eb:MessageHeader>
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
      ...
    </wsse:Security>
  </soap-env:Header>
  <soap-env:Body>
    <SessionCreateRS xmlns="http://www.opentravel.org/OTA/2002/11">
      ...
    </SessionCreateRS>
  </soap-env:Body>
</soap-env:Envelope></code>

SimpleXML로 이 문서를 구문 분석하려면 다음 단계를 수행할 수 있습니다.

  1. XML 로드: XML 문자열을 SimpleXML로 로드합니다. 개체:
<code class="php">$xml = simplexml_load_string($xmlString);</code>
  1. 네임스페이스 등록: RegisterXPathNamespace() 메서드를 사용하여 SimpleXML 개체에 네임스페이스를 등록합니다.
<code class="php">$xml->registerXPathNamespace('soap-env', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('eb', 'http://www.ebxml.org/namespaces/messageHeader');
$xml->registerXPathNamespace('wsse', 'http://schemas.xmlsoap.org/ws/2002/12/secext');</code>
  1. XPath 사용 쿼리: XPath 쿼리를 사용하면 XML 문서를 탐색하고 쿼리하여 특정 네임스페이스 내의 요소에 액세스할 수 있습니다.
<code class="php">foreach ($xml->xpath('//eb:MessageHeader') as $header) {
  var_dump($header->xpath('//eb:CPAId')); // Outputs "something"
}</code>

다음 단계를 따르면 여러 네임스페이스가 있는 XML 문서를 성공적으로 구문 분석할 수 있습니다. SimpleXML을 사용하면 각 네임스페이스 내의 요소에 효과적으로 액세스하고 조작할 수 있습니다.

위 내용은 SimpleXML을 사용하여 여러 네임스페이스가 있는 XML을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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