首頁 > 後端開發 > php教程 > 如何使用 SimpleXML 有效率地解析帶有命名空間前綴的 SOAP XML?

如何使用 SimpleXML 有效率地解析帶有命名空間前綴的 SOAP XML?

Susan Sarandon
發布: 2024-11-28 09:22:16
原創
462 人瀏覽過

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

如何解析SOAP XML:剝離SimpleXML 的命名空間前綴

解析SOAP XML 文件時,命名空間ml 可能會給simplex 等庫帶來挑戰。當遇到類似以下內容的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);
登入後複製

透過刪除命名空間前綴,XML 變得更容易 simplexml 解析。產生的 SimpleXMLElement 物件將包含嵌套在 下的所需資料。和。此技術可讓您根據需要方便地操作和存取解析的 SOAP XML 資料。

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

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