XML DOM 节点列表
getElementsByTagName() 方法和 childNodes 属性会返回一个节点列表。
DOM Node List
使用 childNodes 或 getElementsByTagName() 等属性或方法时,会返回一个节点列表对象。
节点列表对象代表一个节点列表,节点顺序与 XML 中相同。
节点列表中的节点通过索引号访问,从 0 开始。
下图代表 books.xml 中 <title> 元素的节点列表

假设 "books.xml" 已加载到变量 xmlDoc 中。
此代码片段在 "books.xml" 中返回一个 title 元素的节点列表
x = xmlDoc.getElementsByTagName("title");
执行上述语句后,x 是一个节点列表对象。
以下代码片段从节点列表 (x) 中的第一个 <title> 元素返回文本
执行上述语句后,txt = "Everyday Italian"。
Node List Length
节点列表对象会自行更新。如果删除或添加了元素,列表会自动更新。
节点列表的 length 属性是列表中节点的数量。
此代码片段返回 "books.xml" 中 <title> 元素的数量
x = xmlDoc.getElementsByTagName('title').length;
执行上述语句后,x 的值将是 4。
可以使用节点列表的长度来循环遍历列表中的所有元素。
此代码片段使用 length 属性循环遍历 <title> 元素列表
示例
x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i <xLen; i++) {
txt += x[i].childNodes[0].nodeValue) + " ";
}
输出
Everyday Italian
Harry Potter
XQuery Kick Start
学习 XML
自己动手试一试 »
示例说明
- 假设 books.xml 已加载到 xmlDoc 中
- 将 x 变量设置为包含所有 title 元素的节点列表
- 从 <title> 元素中收集文本节点值
DOM Attribute List (Named Node Map)
元素节点的 attributes 属性返回一个属性节点列表。
这被称为命名节点映射,它与节点列表类似,但方法和属性有所不同。
属性列表会自行更新。如果删除或添加了属性,列表会自动更新。
此代码片段从 "books.xml" 中的第一个 <book> 元素返回属性节点列表
x = xmlDoc.getElementsByTagName('book')[0].attributes;
执行上述代码后,x.length 是属性的数量,并且可以使用 x.getNamedItem() 返回一个属性节点。
此代码片段获取 "category" 属性的值,以及一本书的属性数量
示例
x = xmlDoc.getElementsByTagName("book")[0].attributes;
txt = x.getNamedItem("category").nodeValue + " " + x.length;
输出
cooking 1
自己动手试一试 »
示例说明
- 假设 books.xml 已加载到 xmlDoc 中
- 将 x 变量设置为包含第一个 <book> 元素的所有属性的列表
- 获取 "category" 属性的值以及属性列表的长度