xpath - 如何通过 XPath 选择每个元素中的第一个匹配项?
问题描述
在以下 html 标记中:
<div>
<div>
<h3>
<a href='http://Ali.org'></a>
</h3>
<div>
<p>
<a href='http://Mohammad.org'></a>
</p>
</div>
</div>
<div>
<h4>
<a href='http://Ali.org'></a>
</h4>
<p>
<a href='http://Mohammad.org'></a>
</p>
</div>
</div>
我想选择两个' a '标签' http://Ali.org '和' http://YaALi.org '。通过以下方式,我可以:
//div//a[not(parent::*[not(following-sibling::*)])]
但是更简单的 XPath 呢?通过以下方式,将选择所有' a '标签,因为它们都是父母的第一个孩子:
//div/div//a[1]
或者通过以下方式,只会选择第一个“ a ”标签:
(//div//a)[1]
我想选择 div 元素的“a”标签中的第一个“a”标签...
解决方案
//
in the middle of a path 是 的缩写descendant-or-self::node()
,所以如果你这样做
//div/div//a[1]
这实际上意味着
//div/div/descendant-or-self::node()/a[1]
a
这会选择所有后代节点的第一个子节点。你想要的是:
//div/div/descendant::a[1]
这将选择第一个后代a
。
推荐阅读
- python - 减去没有循环的数组中的行
- intellij-idea - 如何在 IntelliJ 中手动下载 ClojureDocs for Cursive?
- javascript - TableLayout 中的动态节点
- select - Inkscape Alt + Drag Select 不选择组成员,而是选择整个组
- docker - 扩展具有多个实例的服务时 docker-compose.yml 中的命令替换
- javascript - 使用导出到 vanilla javascript 的反应组件创建 npm 包
- android - System.IO 写入操作在应用沙箱之外的 Android 11 中不起作用
- visual-studio-2019 - 导入项目中的 shlwapi.h 编译错误
- python-3.x - PuLP python中的XOR语句
- json - Gradle 或 jackson fasterxml @JsonProperty 不起作用