XPATH表达式选择有两个孩子的父母

Joh*_*ers 1 xml xpath

我有一个类似于这个的XML结构:

<Header>
    <ElementA>
        <ElementB>
            <ElementC/>
            <ElementC/>
        </ElementB>
        <ElementB/>
    </ElementA>
</Header>
Run Code Online (Sandbox Code Playgroud)

其中<ElementB>可能有一系列<ElementC>,或可能没有.

我可以选择<ElementA>有两个<ElementB>by的节点/Header/ElementA/ElementB/following-sibling::ElementB.我可以选择<ElementA>包含一个<ElementB>包含<ElementC>using 的节点的节点/Header/ElementA/ElementB[ElementC].

但我怎么选择<ElementA>其中包含一个节点<ElementB>包含一个<ElementC>紧接着又<ElementB>含有另一种<ElementC>.像这样的东西:

<Header>
    <ElementA>
        <ElementB>
            <ElementC/>
            <ElementC/>
        </ElementB>
        <ElementB>
            <ElementC/>
            <ElementC/>
        </ElementB>
    </ElementA>
</Header>
Run Code Online (Sandbox Code Playgroud)

Rob*_*ney 9

请注意,您不必显式搜索以下兄弟轴.这两个模式将返回相同的结果:

foo[bar/following-sibling::bar]
Run Code Online (Sandbox Code Playgroud)

foo[bar[2]]
Run Code Online (Sandbox Code Playgroud)

所以你的模式可以很简单:

/Header/ElementA[ElementB[ElementC][2]]
Run Code Online (Sandbox Code Playgroud)

将找到ElementA具有两个或更多ElementB子元素的元素,每个ElementC子元素都有一个子元素.