XML DOM - 访问节点
使用 DOM,您可以访问 XML 文档中的每个节点。
访问节点
您可以通过三种方式访问节点
- 使用 getElementsByTagName() 方法
- 遍历节点树
- 使用节点关系导航节点树
getElementsByTagName() 方法
getElementsByTagName() 返回所有具有指定标签名的元素。
语法
node.getElementsByTagName("tagname");
示例
以下示例返回 x 元素下所有 <title> 元素
x.getElementsByTagName("title");
请注意,上面的示例仅返回 x 节点下的 <title> 元素。要返回 XML 文档中的所有 <title> 元素,请使用
xmlDoc.getElementsByTagName("title");
其中 xmlDoc 是文档本身(文档节点)。
DOM 节点列表
getElementsByTagName() 方法返回一个节点列表。节点列表是一个节点数组。
x = xmlDoc.getElementsByTagName("title");
可以通过索引号访问 x 中的 <title> 元素。要访问第三个 <title>,您可以编写:
y = x[2];
注意:索引从 0 开始。
DOM 节点列表长度
length 属性定义节点列表的长度(节点数量)。
您可以使用 length 属性遍历节点列表
示例
var x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
// 对每个节点执行某些操作
}
试试看 »
节点类型
XML 文档的 documentElement 属性是根节点。
节点的 nodeName 属性是节点的名称。
节点的 nodeType 属性是节点的类型。
您将在本教程的下一章中了解更多关于节点属性的信息。
遍历节点
以下代码遍历根节点的子节点(也是元素节点)
示例
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++) {
// 仅处理元素节点(类型 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
试试看 »
示例解释
- 假设您已将 "books.xml" 加载到 xmlDoc 中
- 获取根元素 (xmlDoc) 的子节点
- 对于每个子节点,检查节点类型。如果节点类型为“1”,则它是一个元素节点
- 如果它是一个元素节点,则输出节点的名称
导航节点关系
以下代码使用节点关系导航节点树
示例
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++) {
// 仅处理元素节点(类型 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
试试看 »
示例解释
- 假设您已将 "books.xml" 加载到 xmlDoc 中
- 获取第一个 book 元素的子节点
- 将“y”变量设置为第一个 book 元素的第一个子节点
- 对于每个子节点(从第一个子节点“y”开始)
- 检查节点类型。如果节点类型为“1”,则它是一个元素节点
- 如果它是一个元素节点,则输出节点的名称
- 将“y”变量设置为下一个兄弟节点,并再次运行循环