最新的Web开发教程
 

XML DOM - 访问节点


与DOM,你可以在XML文档中访问的每个节点。


试一试 - 示例

下面的例子使用XML文件的Books.xml

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

通过使用length属性节点环
通过所有使用length属性来循环<title>中的元素"books.xml"

见元素的节点类别
使用nodeType属性来获取根元素的节点类型在"books.xml"

通过元素节点环
使用nodeType属性来只处理元素节点中"books.xml"

通过使用节点的关系元素节点环
使用nodeType属性和nextSibling属性来处理元素节点中"books.xml"

×


访问节点

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

1.通过使用getElementsByTagName()方法

2.通过循环(traversing)节点树。

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


getElementsByTagName()方法

的getElementsByTagName()返回与指定标签名的所有元素。

句法

node.getElementsByTagName("tagname");

下面的例子返回所有<title>的X元素下的元素:

x.getElementsByTagName("title");

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

xmlDoc.getElementsByTagName("title");

其中,xmlDoc中的文档本身(document node)


DOM节点列表

getElementsByTagName()方法返回一个节点列表。 节点列表是节点的数组。

x = xmlDoc.getElementsByTagName("title");

<title> x中的元素可以通过索引号来访问。 要访问第三个<title>你可以写::

y = x[2];

Note:该指数从0开始。

您将了解更多有关节点列表在本教程稍后的章节。


DOM节点列表长度

长度属性定义的一个节点列表的长度(the number of nodes)

您可以通过使用length属性通过节点列表循环:

var x = xmlDoc.getElementsByTagName("title");

for (i = 0; i <x.length; i++) {
  // do something for each node
  }
试一试»

节点类型

documentElement XML文档的属性是根节点。

nodeName的节点的属性是节点的名称。

nodeType的节点的属性是节点的类型。

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

试一试


遍历节点

下面的代码循环的子节点,即,也元素节点,根节点的:

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. 假设你已经装“ 的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. 对于每个子节点(starting with the first child node "y")
  5. 检查节点类型。 如果该节点类型是"1"它是一个元素节点
  6. 输出节点的名称,如果它是一个元素节点
  7. 设置"y"变量成为下一个同级节点,并通过循环再次运行