php 将xml转换为数组

不多说了,上代码。

students.xml

[html]  view plain  copy
  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <students>  
  3.     <student sn="0001">  
  4.         <name><![CDATA[关羽]]></name>  
  5.         <age>27</age>  
  6.         <sex></sex>  
  7.     </student>  
  8.     <student sn='0002'>  
  9.         <name>张飞</name>  
  10.         <age>27</age>  
  11.         <sex></sex>  
  12.     </student>  
  13.     <student sn='0003'>  
  14.         <name>小乔</name>  
  15.         <age>18</age>  
  16.         <sex></sex>  
  17.     </student>  
  18. </students>  


1.DOM

<?php
$students = [];
//实例化dom对象
$dom = new DOMDocument();
//2.加载xml文档
$dom->load('./students.xml');
//3.获取文档的根节点
$rootElement = $dom->documentElement;
//4.获取子节点
$childNodes = $rootElement->childNodes;
//5.循环子节点
for($i=0;$i<$childNodes->length;$i++){
    //定义一个数组,存放节点
    $student = [];
    //5.1.获取每个子节点
    $childNode = $childNodes->item($i);
    //5.2过滤非元素节点
    if($childNode->nodeType==1){
        $student['sn'] = $childNode->getAttribute('sn');
        //5.2.1获取该元素的所有子节点
        $sonChildNodes = $childNode->childNodes;
        //5.2.2循环该元素的所有子元素
        for($j=0;$j<$sonChildNodes->length;$j++){
            //定义一个数组,存放节点]
            //获取每个子节点
            $sonChildNode = $sonChildNodes->item($j);
            //过滤掉非元素节点
            if($sonChildNode->nodeType==1){
                $student[$sonChildNode->nodeName] = $sonChildNode->nodeValue;
            }
        }
        $students[] = $student;

    }


}
var_dump($students);

2.simpleXml

<?php

$students = [];
$xmls = simplexml_load_file('students.xml');
//获取所有student元素
foreach ($xmls as $xml){
    //声明一个数组
    $student = [];
    //赋值
    $student['sn'] = (string)$xml['sn'];
    $student['name'] = (string)$xml->name;
    $student['age'] = (string)$xml->age;
    $student['sex'] = (string)$xml->sex;
    $students[] = $student;
}
var_dump($students);

猜你喜欢

转载自blog.csdn.net/aawuwuwuxx/article/details/79242965