drvkf88226 2017-11-09 10:03
浏览 90
已采纳

如何使用php从Xml属性获取值

I am trying to get value from xml attributes. But it returns only 3 values "resCode,message,Pid" not able to get "orderno,orderdate". This is my xml value which is coming in $data variable.

 <ns2:orderresponse xmlns="http://vo.services.order.com/base"  xmlns:ns2="http://vo.services.order.com/createorder/response">
 <rescode>111</rescode>
 <messages><message>Success</message></messages>
 <Pid>4555544</Pid>
  <ns2:orderno>A2131589</ns2:orderno>
 <ns2:orderdate>20171109</ns2:orderdate>
 </ns2:orderresponse>

I am using this to get xml attributes value.

 $xmlData = new SimpleXMLElement($data);    
 print_r(xml2array($xmlData));
  • 写回答

2条回答 默认 最新

  • dongyiyu882684 2017-11-09 13:26
    关注

    As some elements include namespaces, they don't work well with the simple json encode bit. As a quick way of just adding in those extra values, I've done...

    <?php
    error_reporting ( E_ALL );
    ini_set ( 'display_errors', 1 );
    
    $data  = <<<XML
     <ns2:orderresponse xmlns="http://vo.services.order.com/base"  xmlns:ns2="http://vo.services.order.com/createorder/response">
     <rescode>111</rescode>
     <messages><message>Success</message></messages>
     <Pid>4555544</Pid>
      <ns2:orderno>A2131589</ns2:orderno>
     <ns2:orderdate>20171109</ns2:orderdate>
     </ns2:orderresponse>
    XML;
    
    $xmlData = new SimpleXMLElement($data);
    $json = json_encode($xmlData);
    $final = json_decode($json,TRUE);
    
    foreach ( $xmlData->children("http://vo.services.order.com/createorder/response") as $ns)    {
        $final[$ns->getName()] = (string)$ns;
    }
    
    print_r($final);
    

    This gives...

    Array
    (
        [rescode] => 111
        [messages] => Array
            (
                [message] => Success
            )
    
        [Pid] => 4555544
        [orderno] => A2131589
        [orderdate] => 20171109
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题