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 节点。
相关推荐
Csvn4 小时前
OpenSpec 详细使用教程
前端
方也_arkling4 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮4 小时前
Spring Bean作用域与生命周期全解析
java·spring
Chengbei115 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1125 小时前
web-第一次课后作业
java·开发语言·idea
之歆5 小时前
Day19_LESS 完全指南——从入门到工程实践
前端·css·less
秋95 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本5 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
DIY源码阁5 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse
云水一下6 小时前
HTML5 从入门到精通:实战收官——从零搭建完整静态网站,综合运用所有知识
前端·html5