XML DOM 节点
根据 XML DOM,XML 文档中的所有内容都是一个节点
- 整个文档是一个文档节点
- 每个 XML 元素都是一个元素节点
- XML 元素中的文本是文本节点
- 每个属性都是一个属性节点
- 注释是注释节点
DOM 示例
查看以下 XML 文件 (books.xml)
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
上面的 XML 中的根节点名为 <bookstore>。
文档中的所有其他节点都包含在 <bookstore> 中。
根节点 <bookstore> 包含 4 个 <book> 节点。
第一个 <book> 节点包含子节点:<title>、<author>、<year> 和 <price>。
子节点分别包含一个文本节点,“Everyday Italian”、“Giada De Laurentiis”、“2005” 和 “30.00”。
文本始终存储在文本节点中
DOM 处理中常见的错误是期望元素节点包含文本。
但是,元素节点的文本存储在文本节点中。
在本示例中:<year>2005</year>,元素节点 <year> 包含一个值为 “2005” 的文本节点。
“2005” 不是 <year> 元素的值!
XML DOM 节点树
XML DOM 将 XML 文档视为树形结构。树形结构称为节点树。
所有节点都可以通过树访问。它们的内容可以被修改或删除,并且可以创建新元素。
节点树显示节点集以及它们之间的连接。树从根节点开始,分支到树最底层的文本节点。
上面的图像代表 XML 文件 books.xml。
节点父级、子级和兄弟姐妹
节点树中的节点彼此之间具有层次关系。
术语父级、子级和兄弟姐妹用于描述这些关系。父节点有子节点。同一级别的子节点称为兄弟姐妹(兄弟或姐妹)。
- 在节点树中,最上面的节点称为根节点。
- 除根节点外,每个节点都只有一个父节点。
- 一个节点可以有任意数量的子节点。
- 叶节点是没有子节点的节点。
- 兄弟姐妹是具有相同父节点的节点。
下面的图像说明了节点树的一部分以及节点之间的关系。
由于 XML 数据以树形形式结构化,因此可以遍历它,而无需了解树的精确结构,也无需了解其中包含的数据类型。
您将在本教程的后面章节中了解有关遍历节点树的更多信息。
第一个子节点 - 最后一个子节点
查看以下 XML 片段
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
在上面的 XML 中,<title> 元素是 <book> 元素的第一个子节点,而 <price> 元素是 <book> 元素的最后一个子节点。
此外,<book> 元素是 <title>、<author>、<year> 和 <price> 元素的父节点。