XPath中查找“某个节点后面的第一个指定节点”应优先使用following-sibling::tagname[1]轴定位同级后续首个元素;若需跨层级则用following::tagname[1],但效率低且范围广。
用 XPath 查找“某个节点后面的第一个指定节点”,核心是使用 following-sibling 轴,配合位置谓词 [1]。
基本写法:following-sibling::tagname[1]
假设你当前定位到一个节点(比如某个 如果要找的是“后面第一个满足某条件的兄弟节点”(比如 class="info" 的 如果目标节点**不在同一级**(比如在下一个 假设有如下 HTML: 第一个 p 第二个 p 那么: 基本上就这些。关键是分清 sibling(同级)和 following(全局后续),再结合 [1] 和谓词位置,就能准确抓到“后面第一个指定节点”。),想找到它**后面紧邻的同级兄弟节点**中第一个指定标签(如 ),写法是:
following-sibling::p[1] —— 找当前节点之后、同级中第一个
、)隔开,只要目标 
是后续兄弟中第一个出现的,就匹配成功更精确:带条件的首个兄弟节点
),可以加谓词:
following-sibling::div[@class='info'][1][@class='info'][1] 表示“先筛选出所有符合条件的兄弟 ,再取其中第一个”
following-sibling::div[1][@class='info'] 表示“先取第一个兄弟 ,再判断它是否 class='info'”——二者逻辑不同,结果可能不一样
跨层级?用 following 轴(慎用)
里),following-sibling 就失效了。此时可用 following 轴:
following::p[1] —— 找文档中当前节点之后、**所有后续节点中第一个 **(不管嵌套多深)following 包含所有后代和后续兄弟的后代,范围大、效率低,且容易受文档结构影响following-sibling;只有确认目标一定是同级或需跨层时,才考虑 following
实际例子(HTML 片段)
无关项
提示框
//div[@id='start']/following-sibling::p[1] → 匹配“第一个 p”//div[@id='start']/following-sibling::div[@class='info'][1] → 匹配“提示框”//div[@id='start']/following::p[1] → 同样匹配“第一个 p”(因为它是后续中第一个 )








![Go 中切片操作 s[i:j] 的边界理](http://public-space.oss-cn-hongkong.aliyucs.com/gz/047.jpg)