XPath 仅选择第一级节点,无论其在层次结构中的位置如何

joh*_*yno 5 xpath

我有 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>
Run Code Online (Sandbox Code Playgroud)

har*_*r07 3

一种可能的 XPath :

//div[@class='aaa' and not(ancestor::div[@class='aaa'])]
Run Code Online (Sandbox Code Playgroud)

基本上在 XPath 之上选择<div>具有classequals"aaa"且不具有equals 的祖先<div>class"aaa",换句话说,最外层<div>具有classequals "aaa"