XPath - 选择一个或另一个元素

时间:2012-10-24 14:46:49

标签: xpath

我正在使用XPath从HTML文档中获取一个元素。元素必须具有特定的id,或者如果id不存在,则获取保证存在的元素(例如body元素)。

要使用其ID获取元素,我使用:

css=#may-not-exist

并获得我使用的后备元素(比如身体):

css=body

如何将上述两个表达式合并为一个表达式(get #may-not-exist else get body)?

1 个答案:

答案 0 :(得分:21)

可以使用body作为默认值。它将首先来自表达式,因为它先于其他任何内容开始(除非您在head中搜索某些内容。

(//*[@id="xxx"] | //body)[last()]

说明:

( ... | ... )部分返回其子部分的并集。这些是*[@id="xxx"] - 属性id值为xxx的任何元素 - 和// body,即body。从这个联合,[last()]选择最后一个。返回的节点的排序方式与原始文档中的顺序相同,因此主体首先出现(至少在身体内部之前)。如果存在具有id的元素,它将在body之后出现并将被返回。如果没有,body将作为从union返回的唯一(第一个和最后一个)节点返回。