DOM 访问节点
-
定义和使用
使用DOM,您可以访问XML文档中的每个节点。下面的示例使用XML文件books.xml-
使用节点列表中的索引号访问节点
使用 getElementsByTagName() 方法获取 “books.xml” 中的第三个<title>元素
-
使用 length 属性循环遍历节点
使用 length 属性循环遍历 “books.xml” 中的所有<title>元素
-
查看元素的节点类型
使用 nodeType 属性可获取 “books.xml” 中根元素的节点类型。
-
遍历元素节点
使用 nodeType 属性仅处理 “books.xml” 中的元素节点。
-
使用节点关系遍历元素节点
使用 nodeType 属性和 nextSibling 属性来处理 “books.xml” 中的元素节点。
-
使用节点列表中的索引号访问节点
-
访问节点
您可以通过三种方式访问节点:- 通过使用 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开始。
length 属性定义节点列表的长度(节点数)。您可以使用 length 属性遍历节点列表:
尝试一下var x = xmlDoc.getElementsByTagName("title"); for (i = 0; i <x.length; i++) { //为每个节点做某事 }
-
-
遍历节点
以下代码循环遍历根节点的子节点,这些子节点也是元素节点:
尝试一下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>"; } }
示例说明:- 假设您已将 "books.xml" 加载到 xmlDoc 中
- 获取根元素的子节点(xmlDoc)
- 对于每个子节点,请检查节点类型。 如果节点类型为 “1”,则它是一个元素节点
- 如果节点是元素节点,则输出节点的名称
-
导航节点关系
以下代码使用节点关系导航节点树:
尝试一下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; }
示例说明:- 假设您已将 "books.xml" 加载到 xmlDoc 中
- 获取第一本书元素的子节点
- 将 “y” 变量设置为第一本书元素的第一个子节点
- 对于每个子节点(从第一个子节点“y”开始)
- 检查节点类型。 如果节点类型为 “1”,则它是一个元素节点
- 如果节点是元素节点,则输出节点的名称
- 将 “y” 变量设置为下一个同级节点,然后再次运行循环