DOM 访问节点

创建于 2024-12-03 / 19
字体: [默认] [大] [更大]

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


尝试一下 - 实例

下面的实例使用XML文件 books.xml.

使用节点列表中的索引号访问节点
使用getElementsByTagName()方法获取 "books.xml" 中的第三个<title> 元素

使用长度属性循环遍历节点
使用length属性遍历"books.xml"中的所有<title>元素

查看元素的节点类型
使用nodeType属性获取"books.xml"中根元素的节点类型。

循环遍历元素节点
使用nodeType属性仅处理"books.xml"中的元素节点。

使用节点关系循环遍历元素节点
使用nodeType属性和nextSibling属性来处理"books.xml"中的元素节点。

×

Header


访问节点

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

1. 通过使用 getElementsByTagName() 方法

2. 通过循环遍历节点树。

3. 通过导航节点树,使用节点关系。


getElementsByTagName() 方法

getElementsByTagName() 返回所有具有指定标记名的元素。

语法

node.getElementsByTagName("tagname");

实例

下面的实例返回 <title> x元素下的元素:

x.getElementsByTagName("title");

注意,上面的实例只返回x节点下的<title>元素。要返回XML文档中的所有<title>元素,请使用:

xmlDoc.getElementsByTagName("title");

其中xmlDoc是文档本身(文档节点)



DOM DOM Node List

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++) {
  // 为每个节点做一些事情
  } 尝试一下 »

节点类型

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>";
  }
} 尝试一下 »

实例说明:

  1. 假设您已将"books.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. 假设您已将"books.xml"加载到 xmlDoc 中
  2. 获取第一个book元素的子节点
  3. 将"y"变量设置为第一个book元素的第一个子节点
  4. 对于每个子节点(从第一个子节点"y"开始):
  5. 检查节点类型。如果节点类型为"1",则为元素节点
  6. 如果节点是元素节点,则输出该节点的名称
  7. 将"y"变量设置为下一个同级节点,然后再次运行循环


0 人点赞过