

发布于 2025-07-19 14:11更新于 2025-07-19 17:082167浏览
XPath(XML Path Language)是一种专门用于在XML和HTML文档中查找信息的查询语言。它通过路径表达式的方式,允许开发者通过描述元素之间的层次关系和属性特征来精确定位文档中的节点。

XPath的核心价值在于:
推荐工具:XPath Tool(浏览器扩展插件)
安装步骤:
或者直接打开 XPath Tool - Microsoft Edge Addons 安装使用(Edge浏览器)【别忘了写个好评
】
其他浏览器使用方法: https://kdocs.cn/l/cdD4SA89Y0kr

XPath中最基本的两种路径表达式:
| 维度 | /(绝对路径) | //(相对路径,后代路径) |
|---|---|---|
| 起始点 | 只能从文档根节点开始 | 可从任意位置开始(相对当前节点) |
| 搜索范围 | 仅匹配直接子节点(一层深度) | 递归搜索所有后代节点(任意深度) |
| 语法位置 | 必须以 / 开头(如 /bookstore/book) | 可出现在路径任意位置(如 book//title) |
| 性能 | 更快(无需递归遍历) | 较慢(需检查所有后代) |
| 典型场景 | 精确定位直接子节点(如根元素、一级子节点) | 查找嵌套层级未知的元素(如所有 <p> 标签) |
| 示例对比 | /html/body/div 仅选中 <body> 的直接子级 <div> | //div 选中文档中所有 <div>(无论嵌套多深) |
| 组合使用 | /bookstore/book/title(绝对路径) | /bookstore//title(bookstore 内所有 title) |
| 易错点 | 遗漏层级会匹配失败 | 可能意外选中深层嵌套的同名节点 |
XPath提供了多种通配符来简化表达式:
轴定义了节点之间的关系方向,是XPath的高级功能:
| 轴名称 | 说明 | 示例 |
|---|---|---|
| child:: | 当前节点的子节点 | //div/child::span |
| parent:: | 当前节点的父节点 | //span/parent::div |
| ancestor:: | 当前节点的所有祖先节点 | //span/ancestor::div |
| descendant:: | 当前节点的所有后代节点 | //div/descendant::span |
| following:: | 文档中当前节点之后的所有节点 | //div/following::span |
| preceding:: | 文档中当前节点之前的所有节点 | //div/preceding::span |
| following-sibling:: | 当前节点之后的所有同级节点 | //li/following-sibling::li |
| preceding-sibling:: | 当前节点之前的所有同级节点 | //li/preceding-sibling::li |
谓词用于对节点集进行过滤,写在方括号[]中:
给定以下HTML片段:
<div class="container">
<div id="header" class="header">
<h1>网站标题</h1>
<nav>
<ul>
<li><a href="/home">首页</a></li>
<li><a href="/news">新闻</a></li>
<li class="active"><a href="/about">关于我们</a></li>
</ul>
</nav>
</div>
<div class="content">
<article>
<h2>文章标题</h2>
<p class="intro">文章简介...</p>
<p>文章正文内容...</p>
</article>
</div>
</div>
请编写XPath表达式实现以下选择(对应问题及答案回复评论):
本合集后续将会继续更新,下期内容:XPath 函数与操作符