XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


XML DOM - 访问节点

使用DOM,您可以访问XML文档中的每个节点。


尝试一下 - 实例

下面的实例使用XML文件 books.xml.

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

使用长度属性循环遍历节点
使用length属性遍历"books.xml"中的所有<title>元素

查看元素的节点类型
使用nodeType属性获取"books.xml"中根元素的节点类型。

循环遍历元素节点
使用nodeType属性仅处理"books.xml"中的元素节点。

使用节点关系循环遍历元素节点
使用nodeType属性和nextSibling属性来处理"books.xml"中的元素节点。

×

Header


访问节点

可以通过三种方式访问节点:

1. 通过使用 getElementsByTagName() 方法

2. 通过循环遍历节点树。

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


getElementsByTagName() 方法

getElementsByTagName() 返回所有具有指定标记名的元素。

语法

node.getElementsByTagName("tagname");

实例

下面的实例返回 <title> x元素下的元素:

x.getElementsByTagName("title");

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

xmlDoc.getElementsByTagName("title");

其中xmlDoc是文档本身(文档节点)



DOM DOM Node List

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

x = xmlDoc.getElementsByTagName("title");

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

y = x[2];

注释: 索引从0开始。

在本教程后面的一章中,您将了解有关节点列表的更多信息。


DOM 节点列表长度

length 属性定义节点列表的长度(节点数).

可以使用length属性在节点列表中循环:

实例

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

for (i = 0; i <x.length; i++) {
  // 为每个节点做一些事情
  }
尝试一下 »

节点类型

documentElement 属性是根节点。

nodeName 属性是节点的名称。

nodeType 属性是节点的类型。

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

尝试一下


遍历节点

以下代码在根节点的子节点(也是元素节点)中循环:

实例

txt = "";
x = xmlDoc.documentElement.childNodes;

for (i = 0; i <x.length; i++) {
  // 仅处理元素节点(类型 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. 对于每个子节点(从第一个子节点"y"开始):
  5. 检查节点类型。如果节点类型为"1",则为元素节点
  6. 如果节点是元素节点,则输出该节点的名称
  7. 将"y"变量设置为下一个同级节点,然后再次运行循环