如何使用 SimpleXML 解析具有多個命名空間的 XML?

Barbara Streisand
發布: 2024-11-05 18:52:02
原創
460 人瀏覽過

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>
登入後複製

透過以下步驟,我們可以使用SimpleXML成功解析具有多個命名空間的XML文檔,從而使我們能夠有效地存取和操作每個命名空間內的元素。

以上是如何使用 SimpleXML 解析具有多個命名空間的 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板