XML文件(test.xml):
<?xml version="1.0" encoding="utf-8"?>
<large id="china">
<middle>
<middleClass id="shanxi">陕西</middleClass>
<small>
<smallClass id="xian">西安</smallClass>
<smallClass id="xianyang">咸阳</smallClass>
</small>
</middle>
<middle>
<middleClass id="hunan">湖南</middleClass>
<small>
<smallClass id="changsha">长沙</smallClass>
<smallClass id="zhuzhou">株洲</smallClass>
</small>
</middle>
</large>
PHP代码:
<?php
// 首先要建一个DOMDocument对象
$xml = new DOMDocument();
// 加载Xml文件
$xml->load("d:/test.xml");
// 获取所有的middle标签
$middleDom = $xml->getElementsByTagName("middle");
// 循环遍历middle标签
foreach($middleDom as $middle){
// 获取middleClass标签Node
$middleClass = $middle->getElementsByTagName("middleClass");
/**
* 要获取middleClass标签的Id属性要分两部走
* 1. 获取middleClass中所有属性的列表也就是$middleClass->item(0)->attributes
* 2. 获取middleClass中id的属性,因为其在第一位所以用item(0)
*
* 若取属性的值可以用item(*)->nodeValue
* 若取属性的标签可以用item(*)->nodeName
* 若取属性的类型可以用item(*)->nodeType
*/
echo "middleClass Id: " . $middleClass->item(0)->attributes->item(0)->nodeValue . "<br />";
echo "middleClass value: " . $middleClass->item(0)->nodeValue . "<br />";
// 获取该middle下所有的small标签
$smallDom = $middle->getElementsByTagName("small");
// 循环遍历small标签
foreach($smallDom as $small){
//获取smallClass标签Node
$smallClass = $small->getElementsByTagName("smallClass");
echo " smallClass Id: " . $smallClass->item(0)->attributes->item(0)->nodeValue . "<br />";
echo " smallClass value: " . $smallClass->item(0)->nodeValue . "<br />";
echo " smallClass Id: " . $smallClass->item(1)->attributes->item(0)->nodeValue . "<br />";
echo " smallClass value: " . $smallClass->item(1)->nodeValue . "<br />";
}
}
echo "<br>";
// 获取所有的small标签
$smallDom = $xml->getElementsByTagName("small");
foreach($smallDom as $small){
//获取smallClass标签Node
$smallClass = $small->getElementsByTagName("smallClass");
echo "smallClass Id: " . $smallClass->item(0)->attributes->item(0)->nodeValue . "<br />";
echo "smallClass value: " . $smallClass->item(0)->nodeValue . "<br />";
echo "smallClass Id: " . $smallClass->item(1)->attributes->item(0)->nodeValue . "<br />";
echo "smallClass value: " . $smallClass->item(1)->nodeValue . "<br />";
}
?>
代码执行结果:
middleClass Id: shanxi
middleClass value: 陕西
smallClass Id: xian
smallClass value: 西安
smallClass Id: xianyang
smallClass value: 咸阳
middleClass Id: hunan
middleClass value: 湖南
smallClass Id: changsha
smallClass value: 长沙
smallClass Id: zhuzhou
smallClass value: 株洲
smallClass Id: xian
smallClass value: 西安
smallClass Id: xianyang
smallClass value: 咸阳
smallClass Id: changsha
smallClass value: 长沙
smallClass Id: zhuzhou
smallClass value: 株洲