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 节点。
相关推荐
吴声子夜歌2 分钟前
Java——ArrayList
java·arraylist
旷世奇才李先生3 分钟前
Java 内置HttpClient 深度实战与性能优化全指南
java
西贝爱学习7 分钟前
pdf转TXT文本,适用于文字型PDF;扫描版PDF需要使用OCR(光学字符识别)技术来识别图中的文字
java·服务器·前端
ZC跨境爬虫10 分钟前
跟着 MDN 学 HTML day_43:(DocumentFragment 接口详解)
前端·javascript·vue.js·ui·html·音视频
青柠代码录20 分钟前
【JVM】面试题-Java中有哪些引用类型
java·jvm
Bigger22 分钟前
mini-cc:用最小的代码,复刻一个“真正能干活”的 AI 编程智能体(并且把架构讲清楚)
前端·ai编程·claude
问心无愧051325 分钟前
ctf show web 入门46
android·前端·笔记
计算机安禾25 分钟前
【c++面向对象编程】第7篇:static成员:属于类而不是对象的变量和函数
java·c++·算法
ooseabiscuit29 分钟前
PHP与C++:Web与系统编程的终极对决
前端·c++·php
SEO_juper29 分钟前
外贸独立站流量翻倍后的转化优化
大数据·前端·seo·geo·外贸独立站·谷歌优化·2026