如何使用 Xpath 查找子节点不包含属性的父节点?



使用 Xpath,如何在属性值列表中找到多个子元素中没有一个包含特定属性值的父元素?

这是我的 xml 示例:

<app>
<rdg wit="#R #W #I #S #C #O #D">existunt,</rdg>
<rdg wit="#J">existant,</rdg>
</app>

我的 XML 有数百个这样的元素,这些元素都应该具有相同的一组八个属性值(#R 等(,这些属性值以不同的方式分布在两个或多个元素中。但是其中一些列表中缺少属性值,我需要找到这些节点。

因此,我试图找到所有<app>元素,其中没有一个子元素<rdg>包含 #R。

我可以得到那些确实包含 #R 的//app/rdg[contains(@wit,"#R")],我知道有一个not((函数,但我还没有弄清楚如何让它们一起工作。

您可以按如下方式完成此操作:

//app[not(rdg/@wit[contains(., '#R')])]

或者:

//app[not(rdg[contains(@wit, '#R')])]

这种稍微复杂的方法是必要的,因为app包含多个rdg,所以我们基本上是在做(以第二个例子为例(:

  • 选择所有app...
  • 没有一个rdg孩子在哪里...
  • wit属性包含#R

最新更新