参考资料

  1. XPath Helper 介绍
  2. XPath 运算符
  3. XPath 轴(Axes)
  4. XPath 是 W3C 标准
  5. XPath 标准函数
  6. xpath多个相同元素怎么定位
  7. XPath 选取未知节点
  8. xpath中的节点有多重类型不包括

XPath 轴(Axes)详解表

轴名称描述语法示例说明
ancestor选择当前节点的所有祖先节点(父节点、祖父节点等)ancestor::div查找当前节点之上的所有 div 祖先
ancestor-or-self选择当前节点及其所有祖先节点ancestor-or-self::*包含当前节点及其所有祖先
attribute选择当前节点的所有属性attribute::id@id获取当前节点的 id 属性
child选择当前节点的所有子节点child::book获取当前节点下的所有 book 子节点
descendant选择当前节点的所有后代节点(子节点、孙节点等)descendant::p查找当前节点下的所有 p 元素
descendant-or-self选择当前节点及其所有后代节点descendant-or-self::*包含当前节点及其所有后代
following选择文档中当前节点之后的所有节点(不包括后代)following::div获取当前节点之后的所有 div 节点
following-sibling选择当前节点之后的所有同级节点following-sibling::li获取当前 li 节点之后的所有同级 li
namespace选择当前节点的所有命名空间节点namespace::*获取当前节点的命名空间
parent选择当前节点的父节点parent::*..获取当前节点的父节点
preceding选择文档中当前节点之前的所有节点(不包括祖先)preceding::h2获取当前节点之前的所有 h2 节点
preceding-sibling选择当前节点之前的所有同级节点preceding-sibling::td获取当前 td 节点之前的所有同级 td
self选择当前节点本身self::node().返回当前节点

常用简写形式

简写等价形式示例
@attribute::@idattribute::id
///descendant-or-self::node()///div/descendant-or-self::node()/div
.self::node().//p → 当前节点下的所有 p
..parent::node()../title → 父节点下的 title

示例应用

  1. 获取所有子节点

    child::*  // 当前节点的所有子元素
  2. 获取所有属性

    @*  // 当前节点的所有属性
  3. 获取后续同级节点

    following-sibling::li  // 当前节点之后的所有 `li` 兄弟节点
  4. 获取祖先节点

    ancestor::div  // 当前节点的所有 `div` 祖先
  5. 获取父节点下的某个子节点

    ../title  // 父节点下的 `title` 元素