我正在使用 XPath 从 HTML 文档中获取一个元素。该元素必须有一个特定的id,或者如果id不存在,则获取一个保证存在的元素(例如body元素)。
要通过 id 获取元素,我使用:
css=#may-not-exist
为了获得后备元素(比如主体),我使用:
css=body
如何将上面的这两个表达式组合成一个表达式(获取#may-not-exist
否则得到body
)?
Using body
因为默认是可能的。它将首先出现在表达式中,因为它先于其他任何内容开始(除非您要在表达式中搜索某些内容)head
.
(//*[@id="xxx"] | //body)[last()]
解释:
The ( ... | ... )
部分返回其子部分的并集。这些都是*[@id="xxx"]
-- 属性 id 值为 xxx 的任何元素 -- 和 //body,即正文。从这个联盟中,[last()]
选择最后一个。返回的节点的排序方式与原始文档中的排序方式相同,因此正文首先出现(至少在正文内部的任何内容之前)。如果存在具有 id 的元素,它将出现在 body 之后并被返回。如果不是,则 body 将作为从联合返回的唯一(第一个和最后一个)节点返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)