Xpath语法

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 节点。
相关推荐
2301_1472583695 分钟前
7月1日作业
java·前端·算法
汪子熙7 分钟前
Angular 应用中手动调用 subscribe 方法的时机与实践探讨
前端
Ting-yu9 分钟前
Java中Stream流的使用
java·开发语言·windows
一只猿Hou26 分钟前
java分页插件| MyBatis-Plus分页 vs PageHelper分页:全面对比与最佳实践
java·mybatis
程序员弘羽32 分钟前
C++ 第四阶段 内存管理 - 第二节:避免内存泄漏的技巧
java·jvm·c++
旷世奇才李先生36 分钟前
Tomcat 安装使用教程
java·tomcat
MiyueFE38 分钟前
14 个逻辑驱动的 UI 设计技巧,助您改善任何界面
前端·设计
啃火龙果的兔子42 分钟前
前端单元测试覆盖率工具有哪些,分别有什么优缺点
前端·单元测试
勤奋的知更鸟1 小时前
Java 编程之策略模式详解
java·设计模式·策略模式
小宁爱Python1 小时前
FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
sqlite·html·fastapi