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

Xml XPath:选择特定父节点的子节点,xml,xpath,Xml,Xpath,有几个案例 案例A: <Root> <Defaults Id="a"></Defaults> </Root> 案例B: <Root> <Repeat> <Defaults Id="b"></Defaults> </Repeat> </Root> 案例C(嵌套“重复”的数量可能不受限制): 案例D: <Root> <Rep

有几个案例

案例A:

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

案例B:

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

案例C(嵌套“重复”的数量可能不受限制):


案例D:

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

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

谢谢

这个XPath

//Defaults[parent::Root or parent::Repeat]
将选择父元素为
Root
Repeat
的所有
Default
元素

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

按要求

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