目录

XML DOM - 访问节点


使用 DOM,您可以访问 XML 文档中的每个节点。


访问节点

您可以通过三种方式访问​​节点:

  1. 通过使用 getElementsByTagName() 方法
  2. 通过循环(遍历)节点树
  3. 通过导航节点树,使用节点关系

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++) {
  // do something for each node
  }
亲自试一试 »

节点类型

这个文档元素XML文档的属性是根节点。

这个节点名节点的属性是节点的名称。

这个节点类型节点的属性是节点的类型。

您将在本教程的下一章中了解有关节点属性的更多信息。

亲自试一试


遍历节点

以下代码循环遍历根节点的子节点,这些子节点也是元素节点:

示例

txt = "";
x = xmlDoc.documentElement.childNodes;

for (i = 0; i <x.length; i++) {
  // Process only element nodes (type 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}
亲自试一试 »

示例解释:

  1. 假设你已经加载了“书籍.xml” 进入 xmlDoc
  2. 获取根元素的子节点(xmlDoc)
  3. 对于每个子节点,检查节点类型。如果节点类型为"1",则它是元素节点
  4. 如果是元素节点则输出节点名称

导航节点关系

以下代码使用节点关系导航节点树:

示例

x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;

txt = "";
for (i = 0; i <xlen; i++) {
  // Process only element nodes (type 1)
  if (y.nodeType == 1) {
    txt += y.nodeName + "<br>";
  }
  y = y.nextSibling;
}
亲自试一试 »

示例解释:

  1. 假设你已经加载了“书籍.xml” 进入 xmlDoc
  2. 获取第一个 book 元素的子节点
  3. 将 "y" 变量设置为第一个 book 元素的第一个子节点
  4. 对于每个子节点(从第一个子节点"y"开始):
  5. 检查节点类型。如果节点类型为"1",则它是元素节点
  6. 如果是元素节点则输出节点名称
  7. 将"y"变量设置为下一个兄弟节点,并再次运行循环