如何只获取那些有直接子节点的节点?
我有如下的XML片段:
<Item>
<Identifier>12345</Identifier>
<Bin>
<Check>
<Number>1311</Number>
<Level>Warning</Level>
</Check>
</Bin>
<Check>
<Number>1315</Number>
<Level>Warning</Level>
</Check>
<Check>
<Number>192</Number>
<Level>Critical</Level>
</Check>
</Item>
我正在尝试检索作为某个给定节点的直接子节点的 Check 节点。比如,在上述XML中,XPath查询 //Check[Level = "Warning"] 返回两个节点:编号为1311的 Check 节点,以及编号为1315的 Check 节点。
如何查询才能仅返回编号为1315的 Check 节点呢?我想让这个查询对具体的标签不敏感。基本上,对于任意给定的标签,返回那些直接拥有 Check 子节点的标签,但不要返回那些只是给定节点的子节点、同时又有自己的 Check 子节点的节点。我本以为 ./Check[Level = "Warning"] 只会返回该节点,但该查询却返回为空。
我的期望输出不应依赖于某个Check编号的值。我只想要所有作为 Item 节点的直接子节点且其 Level 为 "Warning" 的 Check 节点,但我不想要作为 Bin 节点子节点的那个 Check 节点,也不想要 Level 为 "Critical" 的 Check 节点。此外,除了 Item 之外还有其他标签,所以这个查询也需要与标签无关地编写。我希望这个查询类似于 //Check[Level = "Warning"] 的查询,但 //Check[Level = "Warning"] 只返回 Item 的直接子节点。
非常感谢您对这个问题提供的任何见解。
解决方案
/*/Check[Level="Warning"]
你使用的 ./Check[Level="Warning"] 的XPath在上下文为根节点时返回空结果。你少走了一步。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。