如何使用 XPath 抓取所有后代元素,但只能抓取特定元素



我遵循了 xml

<element id="1">
<choice>
<sequence>
<element id="11">
<group>
<element id="111">
<!-- ... -->
</element>
</group>
</element>
<element id="12">
<element id="121">
<!-- ... -->
</element>
</element>
</sequence>
</choice>
</element>

在当前<element>和子节点之间,<element>节点可以是<choice><sequence><group>节点的任意组合。或者他们可能不是。如何获取当前<element>中的所有直接后代<element>节点,但没有作为其后代的<element>节点。

<element>节点之一的上下文中,我想写一些类似的东西:./(choice|sequence|group)*/element

但它不起作用:(

我认为您只能通过再次使用选择"根"元素的 xpath 来解决它。例如,如果通过 xpath 选择它//element[@id="1"]

.//element[ancestor::element[1] = //element[@id="1"]]

选择所需的内容。它会找到element它和"根"之间没有其他element

您可以在那里测试它 - https://eval.in/781145 设置 id = 1,id = 12 ....

我不确定我是否正确理解了这个问题......试试下面的表达式XPath让我知道它是否不是你想要的:

./*[self::choice or self::sequence or self::group]/element

最新更新