我正在使用XPath从HTML文档中获取一个元素。元素必须具有特定的id,或者如果id不存在,则获取保证存在的元素(例如body元素)。
要使用其ID获取元素,我使用:
css=#may-not-exist
并获得我使用的后备元素(比如身体):
css=body
如何将上述两个表达式合并为一个表达式(get #may-not-exist
else get body
)?
答案 0 :(得分:21)
可以使用body
作为默认值。它将首先来自表达式,因为它先于其他任何内容开始(除非您在head
中搜索某些内容。
(//*[@id="xxx"] | //body)[last()]
( ... | ... )
部分返回其子部分的并集。这些是*[@id="xxx"]
- 属性id值为xxx的任何元素 - 和// body,即body。从这个联合,[last()]
选择最后一个。返回的节点的排序方式与原始文档中的顺序相同,因此主体首先出现(至少在身体内部之前)。如果存在具有id的元素,它将在body之后出现并将被返回。如果没有,body将作为从union返回的唯一(第一个和最后一个)节点返回。