遍历节点

收藏674

阅读703

更新时间2025-07-30

遍历节点树

您经常会需要循环 XML 文档,比如:当您想要提取每个元素的值时。

这个过程叫作“遍历节点树”

下面的例子循环遍历 的所有子节点,并显示它们的名称和值:

实例





运行实例 »

点击 "运行实例" 按钮查看在线实例

例子解释:

  1. 将 XML 字符串加载到 xmlDoc
  2. 获取根元素的子节点
  3. 输出每个子节点的名称,以及其文本节点的节点值

浏览器在 DOM 解析方面的差异

所有现代浏览器都支持 W3C DOM 规范。

但是,浏览器之间存在一些差异。一个重要的区别是:

它们处理空白和换行的方式

DOM - 空白和换行

XML 通常在节点之间包含换行符或空白字符。当使用记事本等简单编辑器编辑文档时,通常会出现这种情况。

下面的例子(由记事本编辑)在每行之间包含 CR/LF(换行符),并且每个子节点前面有两个空格:


  雅舍谈吃
  梁实秋
  江苏文艺出版社
  2013
  35
  9787539962771

Internet Explorer 9 及更早版本不会将空白或新行视为文本节点,而其他浏览器则会这样做。

下面的例子将输出根元素(books.xml)拥有的子节点数。IE9 及之前版本会输出 6 个子节点,而 IE10 及以后版本以及其他浏览器会输出 9 个子节点:

实例

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "子节点数:" + x.length;
}
运行实例 »

点击 "运行实例" 按钮查看在线实例

PCDATA - 解析的字符数据(Parsed Character Data)

XML 解析器通常会解析 XML 文档中的所有文本。

解析 XML 元素时,也会解析 XML 标记之间的文本:

此文本也会被解析

解析器执行此操作是因为 XML 元素可以包含其他元素,如本例所示,其中 元素包含另外两个元素(first 和 last):

BillGates

解析器会将其分解为如下子元素:


  Bill
  Gates

“解析字符数据” (PCDATA) 这个术语,用于描述将由 XML 解析器解析的文本数据。

CDATA - 未解析的字符数据(Unparsed Character Data)

术语 CDATA 用于描述不应由 XML 解析器解析的文本数据。

"<" 和 "&" 等字符在 XML 元素中是非法的。

"<" 将生成错误,因为解析器将其解释为新元素的开始。

"&" 将生成错误,因为解析器将其解释为字符实体的开头。

某些文本(例如 JavaScript 代码)包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分内的所有内容都会被解析器忽略。

CDATA 部分以 "" 开始,以 "]]>" 结束:


在上面的示例中,解析器会忽略 CDATA 部分内的所有内容。

关于 CDATA 部分的注意事项:

CDATA 部分不能包含字符串 "]]>"。不允许嵌套 CDATA 部分。

标记 CDATA 部分结尾的 "]]>" 不能包含空格或换行符。

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号