如果 xpath 中的条件为真,如何获取元素

How to get an element if a condition is true in xpath

我有一个这样的 XML 文件:

<div class="main">
    <div aria="location">
        ...
    </div>
    <div class="transcript">
        ...
    </div>
</div>

如果有一个元素,我想得到 divaria=" location ",如果没有满足该条件的元素,则得到 divclass=" transcript "。 我在 chrome 检查元素选项卡中检查了我的 XPath,我想使用它。

您可以使用 XPath:

(//div[@aria='location']|//div[@class='transcript' and not(following::div[@aria='location'])])[1]

解释:

  • (分组
    • //div[@aria='location'] 找到具有 aria 属性值的 div 元素 location
    • |
    • //div[@class='transcript' and not(following::div[@aria='location'])] 找到具有 class 属性值 transcriptdiv 元素,并且没有具有 aria 属性的 div 元素其后的值 location,按文档顺序
  • )结束分组
  • [1]取第一个结果

following 检查是必要的,因为如果我们刚刚使用:

(//div[@aria='location']|//div[@class='transcript])[1]

那么,如果 class transcriptdiv 元素按文档顺序排在 divaria location 之前,则由于 XPath 遍历的工作原理,div 和 class transcript 将被返回。