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 节点。









