PHP读取XML文件数据获取节点值

时间:2023-03-10 06:59:16
PHP读取XML文件数据获取节点值

最近在接入渠道的时候遇到接口返回是xml数据.现在接口数据返回json数据格式比较常见.

如何获取xml里面真正数据? 对象结果集合单个值的强制转换处理.(直接代码说明)

demo示例:  创建xml文件:test.xml,存放在和读取的php文件在相同级别目录下面.

xml文件:

 <?xml version="1.0" encoding="UTF-8"?>
<node>
<id>10001</id>
<userName>admin</userName>
<node>
<token>secretKey</token>
</node>
</node>

php文件:

 <?php
$file = 'test.xml';
//将XML中的数据,读取到数组对象中
$xml_object=simplexml_load_file($file); //全部对象结果集合
//object(SimpleXMLElement)#1 (3) { ["id"]=> string(5) "10001" ["userName"]=> string(5) "admin" ["node"]=> object(SimpleXMLElement)#2 (1) { ["token"]=> string(9) "secretKey" } }
var_dump($xml_object);
echo '<pre>'; //$xml_object->id对象值
//object(SimpleXMLElement)#2 (1) {[0]=>string(5) "10001"}
var_dump($xml_object->id);
echo '<pre>'; //$xml_object->id对象值
//10001 (echo强制转换结果后获取值,注意:实际取值还需要在处理!)
echo($xml_object->id);
echo '<pre>'; //强制转换字符串处理,对象单个值处理
//$xml_object->id对象值
//string(5) "10001"
var_dump((string)$xml_object->id);
echo '<pre>'; //$xml_object->node->token对象值
//string(9) "secretKey"
var_dump((string)$xml_object->node->token);

结果打印:

PHP读取XML文件数据获取节点值

通过上面的解释,我们也可以使用另一种方法获取xml节点值的数据问题:  json_encode() 对象转成json, json_decode() json再转成数组 .  获取数组直接处理数据就简单. 

demo实例:

 <?php
$file = 'test.xml';
//将XML中的数据,读取到数组对象中
$xml_object=simplexml_load_file($file); $xml_json=json_encode($xml_object);//对象转成json
$xml_arr=json_decode($xml_json,true);//json再转成数组 echo "<pre>";
var_dump($xml_arr);

结果打印:

PHP读取XML文件数据获取节点值