我有xls数据,如下面的代码。 如何只选择class =" aaa"的第一级节点属性?
我不能使用这样的东西" // * [@ class =' aaa']",因为它也会选择2级。
也不能像" / root / div / div [@class =' aaa']那样直接放置路径,因为层次结构内的节点位置可能会有所不同。
有没有办法只选择第一级节点而不管它们在层次结构中的位置?
<root>
<div>
<!-- level 1 -->
<div class="aaa">
<div>
<!-- level 2 -->
<div class="aaa">
</div>
</div>
<div>
<div>
<!-- level 2 -->
<div class="aaa">
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<div>
<div>
<!-- level 1 -->
<div class="aaa">
</div>
</div>
</div>
</div>
</div>
</div>
</root>
答案 0 :(得分:3)
一个可能的XPath:
//div[@class='aaa' and not(ancestor::div[@class='aaa'])]
基本上在XPath之上选择<div>
class
等于"aaa"
而没有祖先<div>
且class
等于"aaa"
,换句话说,<div>
最外层class
等于"aaa"
。
答案 1 :(得分:0)
.//div[@class='aaa' and not(ancestor::div[@class='aaa']) and not(ancestor::div = self::node())]