# Xpath
# 节点
# 节点类型
节点 (node),为 XML 文件的最小构成单位,分为七种:
- element(元素节点):通常包含一个开始标签、一个结束标签,以及位于这两个标签之间的内容,这些内容可以是文本、其他元素或属性
- attribute(属性节点):属性节点是与元素节点相关联的节点,它定义了元素的附加信息。属性节点包含了一个键(名称)和一个值
- text(文本节点):文本节点是包含实际文本内容的节点。它是元素节点的子节点
- namespace(命名空间节点):命名空间节点不是一个独立的节点类型,而是一种使用命名空间来避免元素和属性名称冲突的机制
- processing-instruction(处理指令节点):提供了关于如何处理文档的信息给应用程序。处理指令通常包含两部分:一个目标(通常是处理该指令的程序或处理器的名称)和一些将被处理的指令数据。
- comment(注释节点):用于在文档中添加注释,注释节点在 XML 文档中以
<!--
开头,以-->
结尾。 - root(根节点)(又称文档节点):最顶层的元素节点
一段示例 XML 文本
<?xml version="1.0" encoding="UTF-8"?> | |
<!-- 这是一个注释 --> | |
<bookstore xmlns:bk="http://www.example.com/books"> | |
<book id="b1"> | |
<title lang="en">Harry Potter</title> | |
<author>J.K. Rowling</author> | |
<price>29.99</price> | |
<bk:publishDate>2000-07-08</bk:publishDate> | |
</book> | |
<?display book="b1"?> | |
</bookstore> |
<!-- 这是一个注释 -->
是注释节点<bookstore>
是文档(根)节点<book id="b1">
是元素节点,其中id
是属性节点<title lang="en">Harry Potter</title>
中,Harry Potter
是文本节点,lang="en"
是属性节点,其中lang
为属性名,"en"
为属性值<author>J.K. Rowling</author>
是元素节点,J.K. Rowling
是文本节点xmlns:bk="http://www.example.com/books"
是命名空间节点,定义了一个命名空间<?display book="b1"?>
是处理指令节点
# 基本值 & 项目
- 基本值:元素标签之间的数据,不包含任何子元素或属性,无父或无子的节点,如
J.K. Rowling
- 项目:基本值或者节点
# 节点关系
参考文本
<?xml version="1.0" encoding="UTF-8"?> | |
<bookstore> | |
<book> | |
<title lang="en">Harry Potter</title> | |
<author>J K. Rowling</author> | |
<year>2005</year> | |
<price>29.99</price> | |
</book> | |
</bookstore> |
# 父(Parent)
除根节点外,每个元素都有父
在参考文本中:
book
元素是title、author、year、price
元素的父bookstore
元素是book
元素的父
# 子(Children)
元素节点可有零个、一个或多个子
在参考文本中:
title、author、year、price
元素是book
元素的子book
元素是bookstore
元素的子
# 同胞(Sibling)
拥有相同的父的节点
在参考文本中:
title、author、year、price
元素彼此是同胞
# 先辈(Ancestor)
某节点的父、父的父,等等
在参考文本中:
title
元素的先辈是book
元素和bookstore
元素
# 后代(Descendant)
某个节点的子,子的子,等等
在参考文本中:
- bookstore 的后代是
book
、title、author、year、price
元素
# 语法
需部分了解 html