gpt4 book ai didi

xpath - 如何在包含此文本的页面上找到第一个链接?

转载 作者:行者123 更新时间:2023-12-03 15:36:12 25 4
gpt4 key购买 nike

如果我有两个链接:

<div class="abc">
<a id="def1" href="/definitely">Definitely 1</a>
<a id="def2" href="/definitely">Definitely 2</a>
</div>

我想确定第一个( def1 ),我认为这会起作用:
var linkXPath = "//div[@class='abc']//a[contains(@href,'def')][1]";

但似乎没有。

我究竟做错了什么?

最佳答案

这是一个常见问题 为什么

//someName[1]

不选择 //someName 的第一个元素.

看着 the definition of the // abbreviation , 人们会意识到实际上
//someName[1]

相当于 :
/descendant-or-self::node()/someName[1]

这会选择每个 someName元素是第一个 someName其父节点的子节点。

因此,如果有两个或更多 someName第一个 someName 的元素他们的 parent 的 child ,他们都被选中。

解决方案 :

代替
//someName[1]

使用 :
(//someName)[1]

因此,在您的特定情况下使用 :
(//div[@class='abc']//a[contains(@href,'def')]) [1]

除此之外 ,如果在实际的 XML 文档中指定了默认 namespace ,则上述表达式都不会选择任何节点。在具有默认 namespace 的文档中选择节点是最大的 XPath 常见问题解答。要找到解决方案,只需在此 SO 标记中和 Internet 上的任何位置搜索“默认 namespace ”。

关于xpath - 如何在包含此文本的页面上找到第一个链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com