如何获取所有后代元素,但仅限于使用XPath的某个元素

时间:2017-04-23 10:40:47

标签: xml 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

但不起作用:(

2 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了这个问题...请尝试以下XPath表达式并告诉我这是不是您想要的:

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

答案 1 :(得分:1)

我认为你只能再次使用选择&#34; root&#34;的xpath来解决它。元件。例如,如果您通过xpath //element[@id="1"]选择它,那么

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

选择你想要的。它会找到element之间没有其他element和&#39; root&#39;

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