解析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中文網其他相關文章!