14

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

要通过其 id 获取元素,我使用:

css=#may-not-exist

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

css=body

如何将上面的这两个表达式组合成一个表达式(get #may-not-existelse get body)?

4

1 回答 1

32

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

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

解释:

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

于 2012-10-24T14:52:52.897 回答