php 处理有层次的xml数据

通过simplexml_load_string处理后数据
图片描述

接口返回数据:
图片描述

处理这种xml 数据 想得到里面的节点的值, 请问一下大神们 应该怎么处理

<?xml version='1.0' standalone='yes' charset='gb2312'?><CommPara><ItemPara><ParaRow><retCode>0</retCode><retstr>成功</retstr><VipName>临时会员</VipName><CertNo></CertNo><Mobile></Mobile><retBalance>198770.0000</retBalance><retJF>3916.5000</retJF><retTxt></retTxt></ParaRow></ItemPara></CommPara>

阅读 4.3k
1 个回答

PHP本身就提供了一些库来操作XML,手册:
http://www.php.net/manual/zh/...

  • DOMDocument

  • ML Expat Parser

  • SimpleXML

  • XMLReader

  • ...

参考一下文章例子
http://blog.csdn.net/aloneswo...

自己看看用什么方法来解析~


哪里解决不了?
比如这样吧,遍历层层解析:

<?php
header("Content-type:text/html; Charset=utf-8");

$content = "
<commpara>
  <itempara>
    <pararow>
      <retcode>0</retcode>
      <retstr>成功</retstr>
    </pararow>
  </itempara>
</commpara>
";

// $xml = simplexml_load_file("test.xml");
$xml = simplexml_load_string($content);

echo '第一层:' . $xml->getName() . "<br />";

foreach($xml->children() as $child){
    echo '第二层:' . $child->getName(). "<br />";

    foreach($child->children() as $subChild){
        echo '第三层:' . $subChild->getName() . "<br />";

        foreach($subChild->children() as $item){
            echo $item->getName() . ": " . $item . "<br />";
        }
    }
}

输出:

第一层:commpara
第二层:itempara
第三层:pararow
retcode: 0
retstr: 成功

更简单粗暴的XML转数组,这样子:

$content = "
<commpara>
  <itempara>
    <pararow>
      <retcode>0</retcode>
      <retstr>成功</retstr>
    </pararow>
  </itempara>
</commpara>
";

$xml = simplexml_load_string($content);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);

输出,直接就是个数组:

Array
(
    [itempara] => Array
        (
            [pararow] => Array
                (
                    [retcode] => 0
                    [retstr] => 成功
                )

        )

)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题