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

php中文网
发布: 2016-06-20 12:44:37
原创
1517人浏览过

xml文件有axis生成的:




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





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

NameGPT名称生成器
NameGPT名称生成器

免费AI公司名称生成器,AI在线生成企业名称,注册公司名称起名大全。

NameGPT名称生成器 0
查看详情 NameGPT名称生成器


回复讨论(解决方案)

可以使用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":"企业名称和企业注册号匹配"}                )        ))
登录后复制

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号