求匹配关联元素的XPath表达式:寻找对应class为bar的style的p元素
嘿,这事儿不难,我给你捋清楚怎么写这个XPath表达式!
核心解决方案
要匹配那些关联的<style>元素class为bar的<p>元素,直接用下面这个XPath表达式就可以:
//p[@style = //style[@class='bar']/@id]
表达式拆解
咱们来拆解开看看每部分的作用:
//style[@class='bar']/@id:这部分会先定位到所有class属性等于bar的<style>元素,然后提取它们的id属性值//p[@style = ...]:接着这部分会筛选出所有<p>元素,只要它的style属性值和上面拿到的style元素id一致,就会被匹配到
更精准的优化版本
如果你的XML里有多个<doc>节点,为了避免跨<doc>匹配(只找当前<doc>下对应的<p>),可以用相对路径优化表达式:
//doc/p[@style = ../styles/style[@class='bar']/@id]
这个版本会严格限定在同一个<doc>父节点范围内查找关联的<style>和<p>,逻辑更严谨。
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

