解析 SOAP XML
使用命名空间解析 XML 有时会导致混乱,尤其是在使用 simpleXML 时。
问题陈述
给定的 SOAP XML 响应包含肥皂元素的命名空间前缀。提供了 PHP 中的代码片段来解析 XML,但返回空结果。
正确的解析方法
一个简单的解决方案是从 XML 中去除命名空间前缀在将其传递给 simpleXML 之前响应:
$clean_xml = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $soap_response); $xml = simplexml_load_string($clean_xml);
结果
使用此代码,您将得到以下结果:
SimpleXMLElement Object ( [Body] => SimpleXMLElement Object ( [PaymentNotification] => SimpleXMLElement Object ( [payment] => SimpleXMLElement Object ( [uniqueReference] => ESDEUR11039872 [epacsReference] => 74348dc0-cbf0-df11-b725-001ec9e61285 [postingDate] => 2010-11-15T15:19:45 [bankCurrency] => EUR [bankAmount] => 1.00 [appliedCurrency] => EUR [appliedAmount] => 1.00 [countryCode] => ES [bankInformation] => Sean Wood [merchantReference] => ESDEUR11039872 ) ) ) )
这将允许您按预期访问 payment 元素及其子元素。
以上是如何使用 simpleXML 在 PHP 中正确解析带有命名空间的 SOAP XML 响应?的详细内容。更多信息请关注PHP中文网其他相关文章!