XPath选择祖先列表中没有特定元素的所有元素

时间:2013-02-27 10:48:30

标签: xml xpath

<Root>
  <SomeElement>
    ...
    <Wanted>.....</Wanted>
    <UnWanted>
      <Wanted>.....</Wanted>
    </UnWanted>
    <Wanted>.....</Wanted>
    ...
  </SomeElement>
</Root>

我想选择任何级别的“Wanted”内的“SomeElement”元素,而不是“UnWanted”元素的子元素。

使用XPath /Root/SomeElement//Wanted我无法排除UnWanted的孩子。

1 个答案:

答案 0 :(得分:3)

你可以尝试

/Root/SomeElement//Wanted[not(ancestor::UnWanted)]

这将排除Wanted元素的所有UnWanted个元素,包括子元素,孙元素等(在任何级别)。如果您只想排除Wanted 直接子UnWanted元素(但仍包括孙子等等),请将ancestor::更改为parent::

/Root/SomeElement//Wanted[not(parent::UnWanted)]