首页 >后端开发 >php教程 >如何使用 simpleXML 在 PHP 中正确解析带有命名空间的 SOAP XML 响应?

如何使用 simpleXML 在 PHP 中正确解析带有命名空间的 SOAP XML 响应?

Linda Hamilton
Linda Hamilton原创
2024-12-05 05:08:10776浏览

How to Correctly Parse SOAP XML Responses with Namespaces in PHP Using simpleXML?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn