新闻中心

XPath怎么选择所有兄弟节点 following-sibling和preceding-sibling用法

2025-12-16
浏览次数:
返回列表
XPath中“所有兄弟节点”需用../child::排除自身,而非仅用following-sibling::或preceding-sibling::*;前者只选同父下全部子元素,后者分别只选当前节点后/前的同级节点。

xpath怎么选择所有兄弟节点 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()
  • ◀ preceding-sibling::* 是什么?

    与 above 相反,它选**当前节点之前、同一父元素下的所有同级节点**(顺序从上到下,即 DOM 中靠前的先出现):

    Gaga Gaga

    曹越团队开发的AI视频生成工具

    Gaga 1151 查看详情 Gaga
    • //span[@id='target']/preceding-sibling::* → 选该 前面所有同级元素
    • //span[@id='target']/preceding-sibling::*[1] → 选紧邻前面那个兄弟节点(最近的前一个)
    • 和 following-sibling 一样,它也不跨父级,不包含自己,也不含祖先

    ⚠️ 常见误区提醒

    别混淆这几个概念:

    • following-sibling ≠ “所有兄弟”:它只管后面,不管前面
    • parent::*/child::* ≈ “所有孩子”,也就是当前节点的全部兄弟(含自己),再减去自己才是纯兄弟集
    • following::*preceding::* 是**文档顺序上的后续/前置所有节点**(含后代、祖先的后代等),不是兄弟!范围大得多,慎用
    • 兄弟节点必须满足:相同父节点 + 同为元素节点(默认情况下 ::* 指 element node)

    基本上就这些。选兄弟不复杂,但容易忽略“不含自己”和“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保护的远程文章 

搜索