我正在使用XPath从HTML文档中获取仅一个元素。该元素必须具有特定的id,如果该id不存在,则获取一个保证存在的元素(例如body元素)。
要通过id获取元素,我使用:
css=#may-not-exist
我使用以下代码来获取回退元素(例如,主体):
css=body
我如何将上述这两个表达式合并为一个表达式(获取#may-not-exist
或者获取body
)?
我正在使用XPath从HTML文档中获取仅一个元素。该元素必须具有特定的id,如果该id不存在,则获取一个保证存在的元素(例如body元素)。
要通过id获取元素,我使用:
css=#may-not-exist
我使用以下代码来获取回退元素(例如,主体):
css=body
我如何将上述这两个表达式合并为一个表达式(获取#may-not-exist
或者获取body
)?
使用 body
作为默认值是可行的。它将首先从表达式中出现,因为它在任何其他内容之前开始(除非您正在搜索 head
中的内容)。
(//*[@id="xxx"] | //body)[last()]
( ... | ... )
部分返回其子部分的并集。这些子部分是 *[@id="xxx"]
,即任何具有 id 属性值为 xxx 的元素 ,以及 //body,即 body 元素。从这个并集中,[last()]
选择最后一个节点。返回的节点按照在原文档中的顺序排序,因此 body 元素排在第一位(至少在 body 内的任何内容之前)。如果存在具有该 id 的元素,则它将在 body 后出现并被返回。如果不存在该元素,则 body 将作为并集返回的唯一(第一个和最后一个)节点返回。