XPath中选第一个节点用[1]或[position()=1],选最后一个必须用[last()];注意括号改变作用域,如(//a)[last()]取全部a中最后一个,而//a[last()]取各父元素下最后一个a。
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()] 更清晰高效:
//div[@class="item"][last()] —— 取所有匹配节点中的最后一个(//ul/li)[last()] —— 加括号确保是整个结果集的最后一个 li
? last() 返回的是当前上下文节点列表的总数量,所以 [last()] 就等于取索引为总数的那个节点(即末位)。
a 标签中最后一个”,写 (//a)[last()];写成 //a[last()] 是每个父元素下最后一个 a
position() 从 1 开始计数,不是 0last() 只能在谓词中使用,不能单独写 last() 当表达式[1] 或 [last()] 都不返回任何节点,不会报错基本上就这些。用熟 [1] 和 [last()] 这两个写法,再注意括号控制作用域,就能准确抓取首尾节点了。
# 作用域
# class
# position
# ul
# li
# 第一个
# 这两个
# 的是
# 这是
# 文档
# 都不
# 就能
# 多个
# 才是
# 两种
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
如何在 ACF 中正确更新嵌套多层的 Group 字段子字段
Win11如何设置环境变量 Win11添加和修改系统与用户变量【教程】
PHP主流架构如何做单元测试_工具与流程【详解】
Win10如何更改任务栏高度_Windows10解锁任务栏调整大小
php怎么下载安装并配置环境变量_命令行调用PHP技巧【技巧】
如何将文本文件中的竖排字符串转换为横排字符串
LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现
c++ try_emplace用法_c++ map高效插入数据
php怎么下载安装后设置默认字符集_utf8配置步骤【详解】
php下载安装后swoole扩展怎么安装_异步框架支持【汇总】
MAC怎么解压RAR格式文件_MAC第三方解压工具安装与压缩包管理【教程】
如何从 Go 的 map[string]interface{} 中安全获取值
Linux如何使用grep搜索文件内容_Linux下正则表达式匹配与查找技巧【指南】
Win11怎么设置任务栏图标大小_Windows11注册表TaskbarSi修改
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
php本地部署支持nodejs吗_php与nodejs混合开发环境搭建教程【教程】
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
c++的位运算怎么用 与、或、异或、移位操作详解【底层知识】
Mac的“调度中心”与“空间”怎么用_Mac多桌面高效管理【技巧】
Win10电脑怎么设置休眠快捷键_Windows10电源按钮功能定义
Windows10如何更改桌面图标间距_Win10注册表WindowMetrics修改
c++中的可变参数模板(variadic templates)怎么用_c++模板编程黑魔法【C++11】
php怎么捕获异常_trycatch结构处理运行时错误的技巧【方法】
如何在Golang中使用time处理时间_Golang time时间解析与格式化方法
如何在Golang中实现并发消息队列消费者_Golang channel消息消费实践
Win11怎么关闭触摸键盘图标_Windows11任务栏系统托盘设置
Win11怎么设置触控板手势_Windows11三指四指操作自定义
如何在Golang中处理云原生事件_使用Event和Notification机制
如何使用 Python 合并文件夹内多个 Excel 文件并避免权限错误
Python装饰器设计思路_功能增强机制说明【指导】
Linux怎么禁止Root用户远程登录_Linux系统SSH加固与安全设置【教程】
如何使用正则表达式批量替换重复的“-”模式为固定字符串
c++如何连接Redis c++ hiredis库使用教程【指南】
Mac如何创建和管理多个桌面空间_Mac高效多任务处理【技巧】
Win11怎么关闭任务栏小组件_Windows11隐藏任务栏天气图标
如何在 Go 中正确反序列化 XML 多节点数组(解决仅解析首个元素的问题)
Win11怎么关闭通知中心_Windows11系统通知与专注助手设置
Win11怎么开启游戏模式_Win11优化游戏帧数性能【教程】
短链接怎么用php还原_从基础原理到代码实现教学【详解】
如何使用Golang构建简易投票统计功能_Golang投票数据汇总与展示示例
PyTorch DDP 多进程训练在 Kaggle 笔记本中的正确启动方式
Win11怎么更改计算机名_Windows11系统信息重命名设备教程
静态属性修改会影响所有实例吗_php作用域操作符下静态存储【教程】
如何在Golang中使用闭包_封装变量与函数作用域
Windows10系统怎么查看CPU温度_Win10性能监视器查看硬件数据
Win11怎么设置默认邮件应用_Windows11应用关联Mail设置
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】
c++中如何计算坐标系中两点间距离_c++勾股定理求距离
Windows 10怎么把任务栏放在屏幕上方_Windows 10解锁任务栏并拖动位置
2026-01-03
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。