首頁 >後端開發 >php教程 >如何在 PHP 中高效解析 SOAP XML 回應以避免命名空間前綴問題?

如何在 PHP 中高效解析 SOAP XML 回應以避免命名空間前綴問題?

Barbara Streisand
Barbara Streisand原創
2024-11-28 07:31:101005瀏覽

How Can I Efficiently Parse SOAP XML Responses in PHP to Avoid Namespace Prefix Issues?

解析SOAP XML:實用的解決方案

由於命名空間前綴的存在,解析SOAP XML 回應的任務可能會令人畏懼。當使用 simpleXML 等內建 PHP 函數時,這可能會導致意外結果。

挑戰:

解析 SOAP XML 需要尋址命名空間前綴,這可能會掩蓋所需的內容元素。考慮以下SOAP XML 回應:

<br><?xml version="1.0"encoding="utf-8"?><br><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/"><br> <pre class="brush:php;toolbar:false"><PaymentNotification xmlns="http://apilistener.envoyservices.com">
  <payment>
    <uniqueReference>ESDEUR11039872</uniqueReference>      
    <epacsReference>74348dc0-cbf0-df11-b725-001ec9e61285</epacsReference>
    <postingDate>2010-11-15T15:19:45</postingDate>
    [Additional payment information]
  </payment>
</PaymentNotification>

肥皂:身體>
肥皂:信封>

The解:

一個有效的簡化方法SOAP XML 解析就是消除名稱空間前綴。這可以透過在將XML 傳遞給simpleXML 之前修改XML 來實現:

$xml_response = '<SOAP XML here>';
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $xml_response);
$xml = simplexml_load_string($clean_xml);

現在,您可以存取所需的「付款」元素,而不會遇到命名空間前綴引起的問題:

foreach ($xml->PaymentNotification->payment as $item) {
  print_r($item);
}

這種簡單的方法將傳回「 payment 」元素及其所有子元素及其值。

以上是如何在 PHP 中高效解析 SOAP XML 回應以避免命名空間前綴問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn