0

0

XPath怎么选择第一个和最后一个节点 position()和last()

星降

星降

发布时间:2026-01-03 11:54:10

|

942人浏览过

|

来源于php中文网

原创

XPath中选第一个节点用[1]或[position()=1],选最后一个必须用[last()];注意括号改变作用域,如(//a)[last()]取全部a中最后一个,而//a[last()]取各父元素下最后一个a。

xpath怎么选择第一个和最后一个节点 position()和last()

XPath 中选择第一个和最后一个节点,主要靠 position()last() 这两个函数配合位置谓词(即方括号 [])来实现。关键不是单独用它们,而是用在路径末尾的条件过滤中。

选第一个节点:用 [position() = 1] 或简写 [1]

这是最常用也最推荐的方式。XPath 支持两种等价写法:

  • //div[@class="item"][1] —— 简洁直观,直接取匹配到的所有 div[@class="item"] 中的第 1 个
  • //div[@class="item"][position() = 1] —— 语义更明确,但写法稍长

⚠️ 注意:[1] 是针对当前路径“结果集”的序号,不是文档中全局第 1 个。比如 //ul/li[1] 表示每个 ul 下的第一个 li(可能返回多个),而 (//ul/li)[1] 才是整个文档中第一个 li(加括号改变优先级)。

选最后一个节点:必须用 [last()]

不能写成 [position() = last()](虽然语法合法,但冗余),直接用 [last()] 更清晰高效:

ToonMe
ToonMe

一款风靡Instagram的软件,一键生成卡通头像

下载
  • //div[@class="item"][last()] —— 取所有匹配节点中的最后一个
  • (//ul/li)[last()] —— 加括号确保是整个结果集的最后一个 li

? last() 返回的是当前上下文节点列表的总数量,所以 [last()] 就等于取索引为总数的那个节点(即末位)。

常见误区和细节

  • 别漏括号:想取“所有 a 标签中最后一个”,写 (//a)[last()];写成 //a[last()] 是每个父元素下最后一个 a
  • position() 从 1 开始计数,不是 0
  • last() 只能在谓词中使用,不能单独写 last() 当表达式
  • 如果结果为空,[1][last()] 都不返回任何节点,不会报错

基本上就这些。用熟 [1][last()] 这两个写法,再注意括号控制作用域,就能准确抓取首尾节点了。

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

465

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

13

2025.12.06

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

81

2023.11.23

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

81

2023.11.23

li是什么元素
li是什么元素

li是HTML标记语言中的一个元素,用于创建列表。li代表列表项,它是ul或ol的子元素,li标签的作用是定义列表中的每个项目。本专题为大家li元素相关的各种文章、以及下载和课程。

417

2023.08.03

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

9

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

59

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

82

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

38

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.3万人学习

Pandas 教程
Pandas 教程

共15课时 | 0.9万人学习

NumPy 教程
NumPy 教程

共44课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号