php解析带有命名空间的xml

Posted 追忆丶年华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php解析带有命名空间的xml相关的知识,希望对你有一定的参考价值。

xml如果带有命名空间我们将如何解析,例如:

<ns1:CreateBillResponse xmlns:ns1="http://neusoft.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ns1:out><ns1:OutVo><ns1:strB2BCode xmlns="http://neusoft.com">AM1432690905685938443</ns1:strB2BCode>/neusoft.com">01:strFlag><ns1< span="">:strHpCode xsi:nil="true" xmlns="http://neusoft.com"/><ns1:strReason xmlns="
http://neusoft.com">,产品编码为空,售达方编码为空</ns1:strReason>1:OutVo>:out>:CreateBillResponse>
 
解析的方法:
1 function parseNamespaceXml($xmlstr)
2 {
3  
4     $xmlstr = preg_replace(‘/\sxmlns="(.*?)"/‘‘ _xmlns="${1}"‘$xmlstr);
5     $xmlstr = preg_replace(‘/<(\/)?(\w+):(\w+)/‘‘<${1}${2}_${3}‘$xmlstr);
6     $xmlstr = preg_replace(‘/(\w+):(\w+)="(.*?)"/‘‘${1}_${2}="${3}"‘$xmlstr);
7     $xmlobj = simplexml_load_string($xmlstr);
8     return json_decode(json_encode($xmlobj), true);
9 }

以上是关于php解析带有命名空间的xml的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 DOM 解析器读取带有命名空间前缀的 xml

使用 php SimpleXML 解析 XML 命名空间

使用 php SimpleXML 解析 XML 命名空间

xml 中的 Android 谷歌地图片段。我得到“意外的命名空间前缀”

VSCODE 片段 PHP 自动填充命名空间

使用带有 Xml 命名空间的 Linq to Xml