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

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

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

使用XPath / Root / SomeElement //想要我不能排除UnWanted的孩子.

最佳答案
你可以试试

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

这将排除UnWanted元素的所有Wanted元素,包括子元素,孙子元素等(在任何级别).如果你只想排除那些是UnWanted的直接孩子的Wanted元素(但仍然包括那些孙子等等),那么将ancestor ::更改为parent ::

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

转载注明原文:xml – XPath选择祖先列表中没有特定元素的所有元素 - 代码日志