新闻中心
XPath怎么选择所有兄弟节点 following-sibling和preceding-sibling用法
XPath中“所有兄弟节点”需用../child::排除自身,而非仅用following-sibling::或preceding-sibling::*;前者只选同父下全部子元素,后者分别只选当前节点后/前的同级节点。

XPath 中选择“所有兄弟节点”不能直接用 following-sibling::* 或 preceding-sibling::* 就完事——它们只选**同级中位于当前节点之后或之前的所有节点**,但**不包含父节点下的全部兄弟**(比如不包括当前节点自己左侧+右侧全部,也不含父节点下所有子元素)。真正要选“所有兄弟节点”,得结合 parent::*/child::*,再排除自身。
✅ 正确获取“所有兄弟节点”(含前+后,不含自己)
最可靠写法是:先找父节点的所有子元素,再用 except(XPath 2.0+)或谓词过滤掉当前节点:
-
XPath 2.0/3.0+:
../child::* except . -
XPath 1.0(兼容性更好):
../child::*[not(ancestor-or-self::node() is $currentNode)](需外部绑定变量);更常用的是:../child::*[generate-id() != generate-id(current())](配合支持 generate-id 的处理器,如 XSLT) - 简单实用替代(XPath 1.0):
../child::*先拿到全部子节点,再在代码里手动过滤掉当前节点(推荐,尤其在 Selenium、lxml 等库中)
? following-sibling::* 是什么?
它选取**当前节点之后、在同一父元素下的所有同级节点**(顺序从上到下),只朝后,不回头:
-
//span[@id='target']/following-sibling::*→ 选 id='target' 的 后面所有同级兄弟(如后面的 div、p、span 等) -
//span[@id='target']/following-sibling::div→ 只选后面所有的<div> <li>注意:<code>following-sibling::*不包含文本节点、注释等(除非显式写following-sibling::text()) -
//span[@id='target']/preceding-sibling::*→ 选该
前面所有同级元素
-
//span[@id='target']/preceding-sibling::*[1]→ 选紧邻前面那个兄弟节点(最近的前一个) - 和 following-sibling 一样,它也不跨父级,不包含自己,也不含祖先
-
following-sibling≠ “所有兄弟”:它只管后面,不管前面 -
parent::*/child::*≈ “所有孩子”,也就是当前节点的全部兄弟(含自己),再减去自己才是纯兄弟集 -
following::*和preceding::*是**文档顺序上的后续/前置所有节点**(含后代、祖先的后代等),不是兄弟!范围大得多,慎用 - 兄弟节点必须满足:相同父节点 + 同为元素节点(默认情况下
::*指 element node)
◀ preceding-sibling::* 是什么?
与 above 相反,它选**当前节点之前、同一父元素下的所有同级节点**(顺序从上到下,即 DOM 中靠前的先出现):
Gaga
曹越团队开发的AI视频生成工具
1151
查看详情
⚠️ 常见误区提醒
别混淆这几个概念:
基本上就这些。选兄弟不复杂,但容易忽略“不含自己”和“XPath 版本差异”这两个关键点。
以上就是XPath怎么选择所有兄弟节点 following-sibling和preceding-sibling用法的详细内容,更多请关注其它相关文章!
# 处理器
# 东莞网站排名怎样优化的
# 苏州seo短视频排名
# 常山网站建设
# 云浮谷歌seo怎么样
# 相关文章
# 才是
# 也不
# 过滤掉
# 从上到下
# 的是
# 不包含
# 只选
# 不含
# 如何选择
# win
# node
# 360搜索网站推广
# 宁波seo联系电话
# 黑龙江营销网络推广
# 香港关键词排名哪家好
# 沧州网站推广工作怎么样
# 随州百度网站优化
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道
J*aScriptWebpack优化_J*aScript构建工具实战
铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧
163邮箱登录密码 163邮箱忘记密码找回
手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
实现分段式页面滚动导航:CSS与J*aScript教程
如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
AO3镜像入口大全 AO3网页版内容访问全集
微信群消息显示延迟如何解决 微信群消息刷新优化方法
C++ map遍历方法大全_C++ map迭代器使用总结
Selenium Python中处理点击后新窗口加载冻结问题的策略与实践
如何在J*a中使用Locale处理多语言环境
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
解决 MongoDB 聚合查询中对象数组 _id 匹配问题
C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略
C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件
必由学官网快捷入口 必由学网页版在线学习平台
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程
漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口
支付宝如何管理隐私设置_支付宝隐私保护的配置技巧
在python-socketio事件处理器中安全访问Flask应用上下文
taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】
C++ explicit关键字防止隐式转换_C++构造函数安全规范
如何在J*a中实现统一对象行为接口_项目大型化时的接口规范化
荣耀Play7T运行卡顿解决_荣耀Play7T性能优化
c++如何实现单例设计模式_c++线程安全的单例模式写法
Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度
解决Python logging 中 datefmt 导致时间戳固定不变的问题
Go语言中Map存储的结构体如何调用指针方法:深入解析与实践
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
DLsite中文平台入口 DLsite官网内容在线查看
css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异
Node.js中HTML按钮与J*aScript函数交互的正确姿势
蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗
小米Civi 4录制视频过暗_小米Civi 4亮度优化
蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版
Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突
腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法
Linux如何构建多环境配置管理_Linux多环境配置方案
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
在WordPress中通过REST API获取BasicAuth保护的远程文章


2025-12-16
浏览次数:次
返回列表