XPath 是一种在 XML 和 HTML 文档中查找信息的语言,提供了丰富的表达式来选择节点和处理文档内容;
1. 基本选择器
/:
从根节点选择。/bookstore/book:
选择 bookstore 下的所有 book 节点。
//:
选择文档中的节点,不考虑它们的位置。//book
: 选择文档中的所有 book 节点。
.//:
选择当前节点的所有子孙节点。.//span:
选择当前节点下的所有 span 元素。
.
:选择当前节点。..:
选择当前节点的父节点。
2. 节点选择
nodename:
选择所有该名称的子节点。book:
选择所有名为book
的子节点。
*
: 选择所有节点。bookstore/*:
选择 bookstore 下的所有子节点。
@
: 选择属性。@lang:
选择名为lang
的属性。
@*
: 选择所有属性。book/@*:
选择 book 节点的所有属性。
3. 谓语 (Predicates)
[index]:
选择某个特定的节点(索引从 1 开始)。//book[1]:
选择第一个 book 节点。
[last()]:
选择最后一个节点。//book[last()]:
选择最后一个 book 节点。
[position()]:
选择特定位置的节点。//book[position() < 3]:
选择前两个 book 节点。
[condition]:
根据条件选择节点。//book[@lang='en']:
选择属性 lang 为en
的 book 节点。
4. 逻辑运算
and
,or
,not():
逻辑运算符。//book[@lang='en' and @category='web']:
选择 lang 为en
且 category 为web
的 book 节点。
5. 文本选择
text():
选择节点的文本内容。//book/title/text():
选择 book 节点下的 title 文本内容。
contains()
: 检查包含关系。//book[contains(@category, 'fiction')]:
选择 category 包含fiction
的 book 节点。
starts-with()
: 检查开头。//book[starts-with(@title, 'Harry')]
: 选择标题以Harry
开头的 book 节点。
6. 其他函数
count()
: 计算节点数。count(//book)
: 计算 book 节点的个数。
name()
: 获取节点名称。name(//book[1])
: 获取第一个 book 节点的名称。
normalize-space()
: 去除字符串前后的空白。normalize-space(//book/title)
: 去除 title 文本前后的空白。
7. 轴选择 (Axes)
ancestor::
: 选择当前节点的所有祖先节点。ancestor::bookstore
: 选择当前节点的所有 bookstore 祖先节点。
child::
: 选择当前节点的所有子节点。child::title
: 选择当前节点的 title 子节点。
descendant::
: 选择当前节点的所有子孙节点。descendant::title
: 选择当前节点的所有 title 子孙节点。
following-sibling::
: 选择当前节点之后的所有兄弟节点。following-sibling::book
: 选择当前节点之后的所有 book 兄弟节点。
preceding-sibling::
: 选择当前节点之前的所有兄弟节点。preceding-sibling::book
: 选择当前节点之前的所有 book 兄弟节点。
8. 组合
|
: 组合多个路径。//book | //magazine
: 选择文档中所有的 book 和 magazine 节点。