php 將xml轉換為陣列
阿新 • • 發佈:2018-11-26
不多說了,上程式碼。
students.xml
[html] view plain copy
- <?xml version='1.0' encoding='utf-8'?>
- <students>
- <student sn="0001">
- <
- <age>27</age>
- <sex>男</sex>
- </student>
- <
- <name>張飛</name>
- <age>27</age>
- <sex>男</sex>
- </student>
- <student sn='0003'>
- <name>小喬</name>
- <age>18</age>
- <sex>女</sex>
- </student>
- </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);