把稳:以下属性区分大小写, 而方法不区分大小写;(与php变量区分大小写,函数不区分大小写同等)
DOMNode {/ 属性 /public readonly string $nodeName ; //把稳:此属性与DOMElement工具的tagName的结果是同等的;public string $nodeValue ;public readonly int $nodeType ;public readonly DOMNode $parentNode ;public readonly DOMNodeList $childNodes ;public readonly DOMNode $firstChild ;public readonly DOMNode $lastChild ;public readonly DOMNode $previousSibling ;public readonly DOMNode $nextSibling ;/ 方法 /public DOMNode appendChild ( DOMNode $newnode )public DOMNode removeChild ( DOMNode $oldnode )public DOMNode replaceChild ( DOMNode $newnode , DOMNode $oldnode )}DOMDocument extends DOMNode {/ 属性 /readonly public DOMElement $documentElement ; //获取xml文档的根元素public bool $validateOnParse = false; //见告解析器文件是否有效/ 方法 /public __construct ([ string $version [, string $encoding ]] )/ 利用DOMDocument工具的布局方法:$dom = new DOMDocument('1.0', 'UTF-8'); /public DOMAttr createAttribute ( string $name[, string $value ] )public DOMElement createElement ( string $name [, string $value ] )public DOMNodeList getElementsByTagName ( string $name )public mixed load ( string $filename [, int $options = 0 ] )public int save ( string $filename [, int $options ] )public bool validate ( void ) //验证xml文档}DOMNodeList implements Traversable {/ 属性 /readonly public int $length ;/ 方法 /DOMNode DOMNodelist::item ( int $index )}DOMElement extends DOMNode {/ 继续过来的属性 /public string $nodeValue ;public readonly DOMNode $parentNode ;public readonly string $tagName ;}/ 方法 /public string getAttribute ( string $name )public bool removeAttribute ( string $name )public DOMAttr setAttribute ( string $name , string $value )DOMAttr extends DOMNode {/ 属性 /public readonly string $name ; 属性的名称public string $value ; 属性值}
classes.xml文件:
<?xml version="1.0" encoding="utf-8"?><班级><学生><名字>张三</名字><年事>24</年事><先容>学习负责刻苦</先容></学生><学生><名字>李四</名字><年事>38</年事><先容>是一个精良学生</先容></学生></班级>
解析一个文件的步骤
<?php//1.创建一个DOMDocument工具$xmldoc = new DOMDocument();//2 指定加载xml文件,解析哪个文件$xmldoc->load("classes.xml");//3 获取须要的节点,获取所有的学生节点列表(DOMNodeList)$stus = $xmldoc->getElementsByTagName("学生");/(1)选中第一个学生$stu = $stus->item(0);(2)取出名字$stu_name = $stu->getElementsByTagName("名字");echo $stu_name->item(0)->nodeValue;理解:为什么$stu->getElementsByTagName("名字")语句要赋值给$stu_name呢?getElementsByTagName(string $name)语句形成的工具是DOMNodeList, 而$stu并不知道有多少个名字,以是$stu->getElementsByTagName("名字")语句要赋值给$stu_name, 否则程序就会出错以上两行语句简化:echo $stu_name = $stu->getElementsByTagName("名字")->item(0)->nodeValue;进一步简化:echo $stu->getElementsByTagName("名字")->item(0)->nodeValue;也是精确的///4 遍历for($i=0;$i<$stus->length;$i++){$stu=$stus->item($i);echo getNodeVal($stu,"名字")."<br />";echo getNodeVal($stu,"年事")."<br />";echo getNodeVal($stu,"先容")."<br />";}//自定义的函数,方便调用function getNodeVal(&$MyNode,$tagName){return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;}?>
把稳:探求节点不必从根节点获取
<?php$xmldoc = new DOMDocument();$xmldoc->load("classes.xml");echo $xmldoc->getElementsByTagName("名字")->item(0)->nodeValue;?>
完全实例:
<?php$xmldoc = new DOMDocument();$xmldoc->load("classes.xml");$root = $xmldoc->documentElement; //获取根节点$stus = $root->getElementsByTagName("学生");for($i=0;$i<$stus->length;$i++){$stu = $stus->item($i);echo getNodeVal($stu, "名字")."<br />";echo getNodeVal($stu, "年事")."<br />";echo getNodeVal($stu, "先容")."<br />";}function getNodeVal(&$myNode, $tagName){return $myNode->getElementsByTagName($tagName)->item(0)->nodeValue;}?>
换种形式:
<?php$xmldoc = new DOMDocument();$xmldoc->load("classes.xml");$stus = $xmldoc->getElementsByTagName("学生"); //不必从根节点开始获取for($i=0;$i<$stus->length;$i++){$stu = $stus->item($i);echo getNodeVal($stu, "名字")."<br />";echo getNodeVal($stu, "年事")."<br />";echo getNodeVal($stu, "先容")."<br />";}function getNodeVal(&$myNode, $tagName){return $myNode->getElementsByTagName($tagName)->item(0)->nodeValue;}?>