# XML DOM 节点列表
节点列表由 getElementsByTagName() 方法和 childNodes 属性返回。
## 尝试一下 - 实例
下面的实例使用 XML 文件 [books.xml](images/books.xml)。
函数 [loadXMLDoc()](dom_loadxmldoc.html),位于外部 JavaScript 中,用于加载 XML 文件。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
txt=x[0].childNodes[0].nodeValue;
document.write(txt);
</script>
</body>
</html>
```
[从第一个 <title> 元素获取文本](/try/try.php?filename=try_dom_nodelist)
本例使用 getElementsByTagName() 方法从 "books.xml" 中的第一个 <title> 元素获取文本。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title');
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br>");
}
</script>
</body>
</html>
```
[使用 length 属性遍历节点](/try/try.php?filename=try_dom_nodelist_length)
本例使用节点列表和 length 属性来遍历 "books.xml" 中所有的 <title> 元素。
[获取元素的属性](/try/try.php?filename=try_dom_attributes)
本例使用属性列表从 "books.xml" 中的第一个 <book> 元素获取属性。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br>" + x.length);
</script>
</body>
</html>
```
## DOM 节点列表(Node List)
当使用诸如 childNodes 或 getElementsByTagName() 的属性或方法是,会返回节点列表对象。
节点列表对象表示节点的列表,与 XML 中的顺序相同。
节点列表中的节点使用从 0 开始的索引号进行访问。
下面的图像表示 "[books.xml](images/books.xml)" 中 <title> 元素的节点列表:
![DOM node list](/wp-content/uploads/2013/09/nodelist.gif)
下面的代码片段通过使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中,并返回 "books.xml" 中 title 元素的节点列表:
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
```
在上面的语句执行之后,x 是节点列表对象。
下面的代码片段从节点列表(x)中的第一个 <title> 元素返回文本:
## 实例
```
txt=x[0].childNodes[0].nodeValue;
```
在上面的语句执行之后,txt = "Everyday Italian"。
## 节点列表长度(Node List Length)
节点列表对象会保持自身的更新。如果删除或添加了元素,列表会自动更新。
节点列表的 length 属性是列表中节点的数量。
下面的代码片段通过使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中,并返回 "books.xml" 中 <title> 元素的数量:
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title').length;
```
在上面的语句执行之后,x = 4。
节点列表的长度可用于遍历列表中所有的元素。
下面的代码片段使用 length 属性来遍历 <title> 元素的列表:
## 实例
```
xmlDoc=loadXMLDoc("books.xml");
//the x variable will hold a node list
x=xmlDoc.getElementsByTagName('title');
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("
");
}
```
输出:
```
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
```
实例解释:
1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中
2. 设置 x 变量来保存所有 title 元素的节点列表
3. 从所有 <title> 元素的文本节点输出值
## DOM 属性列表(命名节点图 Named Node Map)
元素节点的 attributes 属性返回属性节点的列表。
这被称为命名节点图(Named Node Map),除了方法和属性上的一些差别以外,它与节点列表相似。
属性列表会保持自身的更新。如果删除或添加属性,这个列表会自动更新。
下面的代码片段通过使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中,并返回 "books.xml" 中第一个 <book> 元素的属性节点列表:
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes;
```
在上面的代码执行之后,x.length 等于属性的数量,可使用 x.getNamedItem() 返回属性节点。
下面的代码片段显示一个 book 的 "category" 属性的值,以及其属性的数量:
## 实例
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("
" + x.length);
```
输出:
```
cooking
1
```
实例解释:
1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中
2. 设置 x 变量来保存第一个 <book> 元素的所有属性的一个列表
3. 从 "category" 属性输出值
4. 输出属性列表的长度
- XML 基础
- XML 简介
- XML 用途
- XML 树结构
- XML 语法规则
- XML 元素
- XML 属性
- XML 验证
- 查看 XML 文件
- 使用 CSS 显示 XML
- 使用 XSLT 显示 XML
- XML Javascript
- XMLHttpRequest 对象
- XML Parser
- XML DOM
- XML to HTML
- XML 应用程序
- XML 进阶
- XML 命名空间
- XML CDATA
- XML 编码
- 服务器上的 XML
- XML DOM 高级
- XML 注意事项
- XML 相关技术
- 现实生活中的 XML
- XML 编辑器
- XML - E4X
- DTD 教程
- DTD 简介
- DTD - XML 构建模块
- DTD - 元素
- DTD - 属性
- XML 元素 vs. 属性
- DTD - 实体
- DTD 验证
- DTD - 来自网络的实例
- XML DOM
- XML DOM 简介
- XML DOM 节点
- XML DOM 节点树
- XML DOM 解析器
- XML DOM 加载函数
- XML DOM - 属性和方法
- XML DOM - 访问节点
- XML DOM 节点信息
- XML DOM 节点列表
- XML DOM 遍历节点树
- XML DOM 浏览器差异
- XML DOM - 导航节点
- XML DOM 获取节点值
- XML DOM 改变节点值
- XML DOM 删除节点
- XML DOM 替换节点
- XML DOM 创建节点
- XML DOM 添加节点
- XML DOM 克隆节点
- The XMLHttpRequest 对象
- XML DOM 节点类型
- XML DOM - Node 对象
- XML DOM - NodeList 对象
- XML DOM - NamedNodeMap 对象
- XML DOM - Document 对象
- XML DOM - DocumentImplementation 对象
- XML DOM - DocumentType 对象
- XML DOM - ProcessingInstruction 对象
- XML DOM - Element 对象
- XML DOM - Attr 对象
- XML DOM - Text 对象
- XML DOM - CDATASection 对象
- XML DOM - Comment 对象
- XMLHttpRequest 对象
- XML DOM Parse Error 对象
- XML DOM 解析器错误
- XSLT 教程
- XSL 语言
- XSLT 简介
- XSLT 浏览器
- XSLT - 转换
- XSLT <xsl:template> 元素
- XSLT <xsl:value-of> 元素
- XSLT <xsl:for-each> 元素
- XSLT <xsl:sort> 元素
- XSLT <xsl:if> 元素
- XSLT <xsl:choose> 元素
- XSLT <xsl:apply-templates> 元素
- XSLT - 在客户端
- XSLT - 在服务器端
- XSLT - 编辑 XML
- XML 编辑器
- XSLT 元素参考手册
- XSLT 函数
- XPath 教程
- XPath 简介
- XPath 节点
- XPath 语法
- XPath 轴(Axes)
- XPath 运算符
- XPath Examples
- XPath、XQuery 以及 XSLT 函数函数参考手册
- 函数参考手册
- XQuery 教程
- XQuery 简介
- XQuery 实例
- XQuery FLWOR 表达式
- XQuery FLWOR + HTML
- XQuery 术语
- XQuery 语法
- XQuery 添加元素 和属性
- XQuery 选择 和 过滤
- XQuery 函数
- XQuery 参考手册
- XLink 和 XPointer 教程
- XLink 和 XPointer 简介
- XLink 和 XPointer 语法
- XLink 实例
- XPointer 实例
- XLink 参考手册
- XML Schema 教程
- XML Schema 简介
- 为什么使用 XML Schemas?
- XSD 如何使用?
- XSD - <schema> 元素
- XSD 简易元素
- XSD 属性
- XSD 限定 / Facets
- XSD 复合元素
- XSD 空元素
- XSD 仅含元素
- XSD 仅含文本
- XSD 混合内容
- XSD 指示器
- XSD <any> 元素
- XSD <anyAttribute> 元素
- XSD 元素替换(Element Substitution)
- XSD 实例
- XSD 字符串 数据类型
- XSD 日期和时间数据类型
- XSD 数值数据类型
- XSD 杂项 数据类型
- XML 编辑器
- XML Schema 参考手册
- XSD 元素
- XSD 限定/Facets
- SOAP 教程
- SOAP 简介
- SOAP 语法
- SOAP Envelope 元素
- SOAP Header 元素
- SOAP Body 元素
- SOAP Fault 元素
- SOAP HTTP 协议
- SOAP 实例
- WSDL 教程
- WSDL 简介
- WSDL 文档
- WSDL 端口
- WSDL 绑定
- WSDL UDDI
- RSS 教程
- RSS 简介
- RSS 历史
- RSS 语法
- RSS <channel> 元素
- RSS <item> 元素
- RSS 发布您的 Feed
- RSS 阅读器
- RSS 参考手册
- RDF 教程
- RDF 简介
- RDF 规则
- RDF 实例
- RDF 主要 元素
- RDF 容器 Elements
- RDF 集合
- RDF Schema (RDFS)
- RDF 都柏林核心元数据倡议
- OWL 简介
- RDF 参考手册
- XSL-FO 教程
- XSL-FO 简介
- XSL-FO 文档
- XSL-FO 区域
- XSL-FO 输出
- XSL-FO 流
- XSL-FO 页面
- XSL-FO 块
- XSL-FO 列表
- XSL-FO 表格
- XSL-FO 与 XSLT
- XSL-FO 软件
- XSL-FO 参考手册
- SVG 教程
- SVG 简介
- SVG 实例
- SVG 在 HTML 页面
- SVG <rect>
- SVG <circle>
- SVG <ellipse>
- SVG <line>
- SVG <polygon>
- SVG <polyline>
- SVG <path>
- SVG <text>
- SVG Stroke 属性
- SVG 滤镜
- SVG 模糊效果
- SVG 阴影
- SVG 渐变 - 线性
- SVG 渐变- 放射性
- SVG 参考手册
- 免责声明