DOM 节点列表
-
定义和使用
nodeName,nodeValue 和 nodeType 属性包含有关节点的信息。下面的示例使用XML文件books.xml-
从第一个<title>元素获取文本
本示例使用 getElementsByTagName() 方法从 “books.xml” 中的第一个<title>元素获取文本。
-
使用 length 属性循环遍历节点
本示例使用节点列表和 length 属性来遍历 “books.xml” 中的所有<title>元素
-
获取元素的属性
本示例使用属性列表从 “books.xml” 中的第一个<book>元素获取属性。
-
从第一个<title>元素获取文本
-
DOM节点列表
使用 childNodes 或 getElementsByTagName() 之类的属性或方法时,将返回节点列表对象。节点列表对象代表节点列表,其顺序与 XML 中的顺序相同。使用从0开始的索引号访问节点列表中的节点。下图表示 “books.xml” 中 <title> 元素的节点列表:假设将 “books.xml” 加载到变量xmlDoc中。此代码片段返回 “books.xml” 中标题元素的节点列表:x = xmlDoc.getElementsByTagName("title");
执行上述语句后,x是节点列表对象。以下代码片段从节点列表(x)中的第一个<title>元素返回文本:
尝试一下var txt = x[0].childNodes[0].nodeValue;
执行以上语句后,txt="中国历史手册"。
-
节点列表长度
节点列表对象使自己保持最新。 如果元素被删除或添加,列表将自动更新。节点列表的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) + " "; }
示例说明:假设 “books.xml” 已加载到 xmlDoc 中设置 x 变量以保存所有标题元素的节点列表从<title>元素收集文本节点值 -
DOM属性列表
元素节点的 attribute 属性返回属性节点的列表。这称为命名节点映射,与节点列表类似,不同之处在于方法和属性上的差异。属性列表使自己保持最新状态。 如果删除或添加属性,列表将自动更新。此代码片段从“books.xml”中的第一个<book>元素返回属性节点的列表:x = xmlDoc.getElementsByTagName('book')[0].attributes;
执行上面的代码后,x.length=是属性的数量,并且 x.getNamedItem() 可用于返回属性节点。此代码段获取书籍的“类别”属性的值和属性数量:
尝试一下x = xmlDoc.getElementsByTagName("book")[0].attributes; txt = x.getNamedItem("category").nodeValue + " " + x.length;
示例说明:假设 “books.xml” 已加载到 xmlDoc 中设置 x 变量以保存第一个<book>元素的所有属性的列表获取“类别”属性的值和属性列表的长度