当前位置:Gxlcms > PHP教程 > ,php解析带命名空间的xml?

,php解析带命名空间的xml?

时间:2021-07-01 10:21:17 帮助过:24人阅读

xml文件有axis生成的:




{"code":"2","message":"企业名称和企业注册号匹配"}





我想获得ns1:checkQyReturn当中的内容。
请问如何用php获取?


回复讨论(解决方案)

可以使用new SimpleXmlElement解决

$x = new SimpleXmlElement($str);  foreach($x->entry as $t){      echo $t->id . "
"; echo $t->updated . "
"; $namespaces = $t->getNameSpaces(true); $gd = $t->children($namespaces['ns1']); echo $gd->phoneNumber; }


参考: http://www.neatstudio.com/show-1549-1.shtml


可以使用new SimpleXmlElement解决

试了命名空间,但解析不了最后用的转换json才解析的。
$xmlstr = preg_replace('/\sxmlns="(.*?)"/', ' _xmlns="${1}"', $simple);
$xmlstr = preg_replace('/<(\/)?(\w+):(\w+)/', '<${1}${2}_${3}', $xmlstr);
$xmlstr = preg_replace('/(\w+):(\w+)="(.*?)"/', '${1}_${2}="${3}"', $xmlstr);
$xmlobj = simplexml_load_string($xmlstr);

$json = json_decode(json_encode($xmlobj), true);
//print_r(json_decode(json_encode($xmlobj), true));
//print_r($json);
$str = $json['soapenv_Body']['checkQyResponse']['ns1_checkQyReturn'];

暴力一下就简单多了

$s =<<< XML{{"code":"2","message":"企业名称和企业注册号匹配"}XML;$s = preg_replace('/\w+:/', '', $s);$x = simplexml_load_string($s);print_r($x);
SimpleXMLElement Object(    [@attributes] => Array        (            [soapenv] => //schemas.xmlsoap.org/soap/envelope/            [xsd] => //www.w3.org/2001/XMLSchema            [xsi] => //www.w3.org/2001/XMLSchema-instance        )    [Body] => SimpleXMLElement Object        (            [checkQyResponse] => SimpleXMLElement Object                (                    [checkQyReturn] => {"code":"2","message":"企业名称和企业注册号匹配"}                )        ))

人气教程排行