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

R K*_*een 5 xml xpath

<Root>
  <SomeElement>
    ...
    <Wanted>.....</Wanted>
    <UnWanted>
      <Wanted>.....</Wanted>
    </UnWanted>
    <Wanted>.....</Wanted>
    ...
  </SomeElement>
</Root>
Run Code Online (Sandbox Code Playgroud)

我想在任何级别选择" Wanted"元素,SomeElement而不是UnWanted"元素"的子元素.

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

Ian*_*rts 3

你可以尝试

/Root/SomeElement//Wanted[not(ancestor::UnWanted)]
Run Code Online (Sandbox Code Playgroud)

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

/Root/SomeElement//Wanted[not(parent::UnWanted)]
Run Code Online (Sandbox Code Playgroud)