XPath:选择特定父级的子级节点

时间:2018-08-08 11:40:56

标签: xml xpath

有几种情况

案例A:

<Root>
  <Defaults Id="a"></Defaults>
</Root>

情况B:

<Root>
  <Repeat>
    <Defaults Id="b"></Defaults>
  </Repeat>
</Root>

情况C(嵌套的“重复”数可能是无限的):

<Root>
  <Repeat>
    <Repeat>
      <Repeat>
        <Defaults Id="c"></Defaults>
      </Repeat>
    </Repeat>
  </Repeat>
</Root>

情况D:

<Root>
  <Repeat>
    <Page Id="p1">
      <Defaults Id="d"></Defaults>
    </Page>
  </Repeat>
</Root>

我需要XPath查询,该查询返回属于Root元素或仅位于Repeat节点内部的Defaults节点。如果至少一个父级不是“重复”节点或“根”,则不应将它们包括在结果中。因此,查询结果应返回测试用例A,B,C中的节点。

谢谢!

1 个答案:

答案 0 :(得分:1)

此XPath,

//Defaults[parent::Root or parent::Repeat]

将选择父项为DefaultRoot的所有Repeat元素,

<Defaults Id="a"></Defaults>
<Defaults Id="b"></Defaults>
<Defaults Id="c"></Defaults>

根据要求。