如果 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>
如果有一个元素,我想得到 div
和 aria=" location "
,如果没有满足该条件的元素,则得到 div
和 class=" 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
属性值 transcript
的 div
元素,并且没有具有 aria
属性的 div
元素其后的值 location
,按文档顺序
)
结束分组
[1]
取第一个结果
following
检查是必要的,因为如果我们刚刚使用:
(//div[@aria='location']|//div[@class='transcript])[1]
那么,如果 class transcript
的 div
元素按文档顺序排在 div
和 aria
location
之前,则由于 XPath 遍历的工作原理,div
和 class transcript
将被返回。
我有一个这样的 XML 文件:
<div class="main">
<div aria="location">
...
</div>
<div class="transcript">
...
</div>
</div>
如果有一个元素,我想得到 div
和 aria=" location "
,如果没有满足该条件的元素,则得到 div
和 class=" 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
属性值transcript
的div
元素,并且没有具有aria
属性的div
元素其后的值location
,按文档顺序
)
结束分组[1]
取第一个结果
following
检查是必要的,因为如果我们刚刚使用:
(//div[@aria='location']|//div[@class='transcript])[1]
那么,如果 class transcript
的 div
元素按文档顺序排在 div
和 aria
location
之前,则由于 XPath 遍历的工作原理,div
和 class transcript
将被返回。