Home  >  Article  >  Backend Development  >  ,php解析带命名空间的xml?

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

WBOY
WBOYOriginal
2016-06-20 12:44:371210browse

xml文件有axis生成的:




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





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


回复讨论(解决方案)

可以使用new SimpleXmlElement解决

$x = new SimpleXmlElement($str);  foreach($x->entry as $t){      echo $t->id . "<br >";      echo $t->updated . "<br />";      $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('/          $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<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><checkQyResponse xmlns=""><ns1:checkQyReturn xmlns:ns1="http://jandar.com.cn">{{"code":"2","message":"&#x4F01;&#x4E1A;&#x540D;&#x79F0;&#x548C;&#x4F01;&#x4E1A;&#x6CE8;&#x518C;&#x53F7;&#x5339;&#x914D;"}</ns1:checkQyReturn></checkQyResponse></soapenv:Body></soapenv:Envelope>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":"企业名称和企业注册号匹配"}                )        ))

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:preg_replace 的/e问题Next article:php array to string