获取特定层次结构级别的元素

2023-11-29

有没有办法使用 XPath 检索特定层次结构级别的所有元素?

Upd.

<A>
   <B>1</B>
   <B>2</B>
</A>
<C>
   <D>3</D>
   <D>4</D>
</C>

我需要检索所有 B 和 D 元素(层次结构级别 = 2)


您的示例缺少根元素,所以我假设是这样的:

<ROOT>
  <A>
    <B>1</B>
    <B>2</B>
  </A>
  <C>
    <D>3</D>
    <D>4</D>
  </C>
</ROOT>

这样,一个简单的版本就是仅使用适当数量的“任何元素”通配符来获取结果:

xpath = '/*/*/*'

(意思是“选择任何根元素的任何子元素的任何子元素”)

或者,如果您想用数字表示级别,您可以使用:

xpath = '//*[count(ancestor::*) = 2]'

(意思是“选择具有 2 个祖先的任何元素”)


编辑/注释:正如 Dimitre Novatchev 正确指出的那样,区分以下两者非常重要:nodes and elements,我相应地修正了我的答案。 (虽然元素本身就是节点,还有其他六种类型的节点!)

通过将基于祖先的 xpath 稍微更改为:

xpath = '//*[count(ancestor::node())=2]'

这将选择 A 和 B,因为根元素将被视为一个祖先节点,而根节点“/”将被视为另一个!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取特定层次结构级别的元素 的相关文章

随机推荐