1. 程式人生 > >php 將xml轉換為陣列

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);