有没有办法使用 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(使用前将#替换为@)