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

2023-11-27

我正在使用 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(使用前将#替换为@)

XPath - 选择一个或另一个元素 的相关文章

随机推荐

  • Excel 互操作替代方案

    我已开始使用 Microsoft 为我的 C 应用程序之一提供的 Excel 互操作程序集 一切都很顺利 但似乎缺乏强类型 老实说感觉就像我正在编写 VBA 代码 是否有其他方法可以通过 C 与 Excel 进行交互 从而提供更好的 OO
  • Youtube APIeekTo() 以浮点秒为单位

    Youtube API seekTo 函数接受浮点时间还是帧时间 您可以向下钻取至小数点后两位吗 是的 API 完美接受 float 形式的eekTo 时间 无论是什么 它都会前进到浮动之前最近的关键帧 这是一个演示 http goo gl
  • 为什么要在列表视图中使用 Inflater

    我总是对为什么我们需要在 android 中使用 inflater 感到困惑 为什么它们在 ListView 中用于自定义布局 如下所示 什么是充气机 使用充气机有什么好处 public class MobileArrayAdapter e
  • HH:MM:SS 时间字符串的正则表达式模式

    我想解析一个hh mm ss细绳 一个简单的就是 0 1 d 2 0 3 0 5 d 0 5 d 期望2 3 24 or 02 03 24细绳 我想更进一步并通过验证 即使在类似的情况下 如果你只输入 56 应该会通过 因为 56 可以被认
  • Cordova 设备在与 iOS 交互之前不会在 iOS 中触发

    我有一个非常奇怪的错误 在用户与操作系统本身交互之前 deviceready 事件不会在 iOS 设备中触发 即按下前面的按钮 向下拖动显示通知中心或向上拖动到设备设置 一旦用户开始拖动 iOS 通知中心 deviceready 就会被触发
  • 使用 jQuery 获取 CSS 中指定的实际值[重复]

    这个问题在这里已经有答案了 解释 我不敢相信以前没有人问过这个问题 但无论如何 请这样做not对此感到困惑question 我正在尝试使用 jQuery 存储元素的高度data方法 以便我可以检索该值并重置特定元素上的原始值 但是 当我尝试
  • 我无法将 lambda 作为 std::function 传递

    让我们重点关注这个例子 template
  • 构建 Boost.Build 引擎“cl”不被识别为内部或外部命令、可操作程序或批处理文件

    有人可以告诉我为什么 bootstrap bat 失败吗 平台 Windows 10升压 boost 1 63 0 C Boost boost 1 63 0 gt bootstrap bat Building Boost Build eng
  • 如何获取用户在 Android 视图上单击的点/坐标?

    我有一个图像视图 单击时会调用OnClickListener onClick View v 如何获得用户单击的确切点 坐标 Thanks 您无法在 OnClickListerner 中获取坐标 请使用 OnTouchListener onT
  • 为什么 Kotlin 不允许将 Lateinit 与原始类型一起使用?

    在 Kotlin 语言中 默认情况下 我们必须在引入每个变量时对其进行初始化 为了避免这种情况 lateinit可以使用关键字 参考一个lateinit变量在初始化之前会导致运行时异常 lateinit但是 不能与原始类型一起使用 为什么会
  • label: .word label 在 ARM 汇编中的含义是什么

    我正在uboot中查看以下序列 globl start start b reset ldr pc undefined instruction ldr pc software interrupt ldr pc prefetch abort l
  • Rails3 中的远程 form_tag 没有命名路由

    使其真正异步发布的正确咒语是什么 form tag controller gt magic action gt search method gt post remote gt true do method post 和remote true
  • 在 Android 中获取外部 SD 卡位置

    我有一个应用程序 在 SD 卡中预存了大量数据 我们支持所有平板电脑ICS 以后 我无法找到在所有设备上正确访问 SDCard 位置的方法 我查看了这里给出的各种解决方案 但它们似乎并不适用于所有情况 寻找通用解决方案 即使有人能告诉我SD
  • 不安全的 JavaScript 尝试通过 URL 访问框架

    我有一个带有 Iframe 的页面和来自 Iframe 的 Javascript 可以访问父框架的功能 这些页面位于同一服务器上 不是跨域脚本 我对 FF 和 IE 没有任何问题 但当我在 Chrome 上使用它时 我收到以下消息 不安全的
  • 未知标签 (c:foreach)。日食中

    我有 jstl 代码 它由 maven 构建得很好 但是 Eclipse 出现编译错误 未知标签 c foreach 代码在这里
  • JavaFX 自定义控件(TextField)不起作用

    我正在尝试使用 JavaFX 和 SceneBuilder 1 1 制作自定义控件 我有这个代码 FXML
  • 如何在Windows azure辅助角色中创建多个线程

    我想在一个辅助角色中执行多个操作 如何以辅助角色创建线程 您可以在中添加多个工人WorkerRole OnStart 如此处所述http www 31a2ba2a b718 11dc 8314 0800200c9a66 com 2010 1
  • JavaScript 通过代码模拟右键单击

    我正在使用 Selenium 编写一些 UI 测试 并且我有一个使用 Dojo 工具包的 JavaScript 树控件 我已经使用 Dojo 提供的示例为树的每个节点实现了一个上下文菜单 但我需要 Selenium 测试来 调用 树节点上的
  • Bootstrap不使用复选框的“checked”属性

    我正在使用引导程序 我有一个表 标题和每列中都有一个复选框 我试图在 jQuery 上实现 检查所有 功能 但引导程序似乎不使用检查属性 正如我所看到的 它在我的复选框周围添加了 span 标签 并向其添加了一个 checked 类 是否有
  • XPath - 选择一个或另一个元素

    我正在使用 XPath 从 HTML 文档中获取一个元素 该元素必须有一个特定的id 或者如果id不存在 则获取一个保证存在的元素 例如body元素 要通过 id 获取元素 我使用 css may not exist 为了获得后备元素 比如