XML查询子节点的方法
对Xml的节点进行简单查询的时候,常用的可以使用如下方法:
(1) XmlNode node = doc.selectSingleNode("//AllNode/Node[@ID = ’aaa’]");
在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的ID属性值为aaa
(2)XmlNode node = doc.selectSingleNode("//AllNode /*[@ID = ’aaa’]");
在整个Xml中查找AllNode节点下的节点,该子节点的ID属性值为aaa
(3) XmlNode node = doc.selectSingleNode("//AllNode/Node[@ID = ’aaa’ and @Name = ‘bbb’]");
在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的ID属性值为aaa,且Name属性为bbb
(4) XmlNode node = doc.selectSingleNode("//AllNode[Node = ’aaa’]");
在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的内容为aaa
(5) XmlNode node = doc.selectSingleNode("//AllNode/Node[@ID = ’aaa’]/ChildNode[@ID=’bbb’]");
在整个Xml中查找AllNode节点下Node节点的子节点ChildNode,且Node节点的ID值为aaa,ChildNode节点的ID值为bbb
最常见的XML数据类型有:Element, Attribute,Comment, Text.
Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
Attribute, 指在<Employee id=”12345”>中的粗体部分。
Comment,指形如:<!-- my comment --> 的节点。
Text,指在<Name>Tom<Name>的粗体部分。
在XML中,可以用XmlNode对象来参照各种XML数据类型。
2.1 查询已知绝对路径的节点(集)
objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”)
或者
objNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”)
以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如:
objNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee
相关文档:
创建文档类型声明
一般而言,XML声明放在文档顶部。在PHP中声明十分简单:只需实例化一个DOM文档类的对象并赋予它一个版本号。查看程序清单A:
程序清单 A
<?php
// create doctype
$dom = new DOMDocument("1.0");
// display document in browser as plain text
// display document in browser as plain text ......
1.route.xml文件内容
<?xml version="1.0" encoding="GBK"?>
<root>
<route id="1111">
<id>111</id>
<name>四川</name>
<path>www.baidu.com/hehe.html</path>
</route>
</root>
2.test.html代码
<html>
<body>
<script> ......
这个效果应该不算什么稀奇,网上也有现成的代码,我这个也没什么特别的地方,只是因为我自己写的,也算是为学习DOM后一个练习;在IE下测试通过;
实现效果是这样的:
读取XML文档;
采用递归生成无限级的树形菜单;
能够响应鼠标事件,展开与拆叠子级菜单;
首先是生成一个XML文档,我用的是XML Spy的编辑器;
< ......
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> ......