You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath获取XML层级结构中最后一个同名PGR元素?

解决XPath匹配目标PGR元素的问题

你的XML结构如下:

<?xml version = "1.0" encoding = "UTF-8"?> 
<ROOT> 
<PGR name="Group1"> 
<PGR name="SubGroup1.1"> 
<PGR name="SubGroup1.2"> 
<PRODUCT></PRODUCT> 
</PGR> 
</PGR> 
</PGR> 
<PGR name="Group2"> 
<PGR name="SubGroup2.1"> 
<PGR name="SubGroup2.2"> 
<PGR name="SubGroup2.3"> 
<PRODUCT></PRODUCT> 
</PGR> 
</PGR> 
</PGR> 
</PGR> 
</ROOT>

你之前用的//PGR[count(*)=0]之所以只返回1个结果,是因为这个表达式的逻辑是匹配没有任何子元素的PGR节点,但你要找的SubGroup1.2和SubGroup2.3这两个PGR下面都有<PRODUCT>子元素,它们的count(*)结果是1,完全不符合这个条件,自然不会被命中。

根据你的需求,这里有两种可行的XPath方案:

方案1:精准匹配节点名称

如果你明确知道目标节点的name属性值,直接用属性匹配是最精准的方式:

//PGR[@name='SubGroup1.2' or @name='SubGroup2.3']

方案2:通用匹配(按子元素特征)

如果你需要匹配所有直接包含PRODUCT子元素的PGR节点(也就是结构里最底层的PGR,正好对应你的两个目标节点),可以用更通用的表达式:

//PGR[PRODUCT]

这个表达式的逻辑是:匹配所有存在直接子元素PRODUCT的PGR节点。观察你的XML结构,上层的PGR节点子节点都是其他PGR,只有SubGroup1.2和SubGroup2.3下面是PRODUCT,所以这个表达式正好能返回你需要的2个元素。

你可以根据实际场景选择其中一种方案,两者都能满足你的需求。

内容的提问来源于stack exchange,提问作者xetra11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:56:51