为什么当我添加 /text() 时,我的 XPath 会卡在第一个结果上

本文关键字:XPath 我的 结果 第一个 添加 text 为什么 | 更新日期: 2023-09-27 18:33:40

这是我尝试使用XPath的HTML的模拟:

<div class="stream-links">
    <div>
        <a href="link">value I need</a>
    </div>
    <div>
        <a href="link">value I need</a>
    </div>
    <div>
        <a href="link">value I need</a>
    </div>
</div>

现在,当我在浏览器中使用 XPath 模式//div[@class='stream-links']/div/a时,它会选择<a ...>节点。每次我按回车键时,它都会选择下一个,但是当我使用模式//div[@class='stream-links']/div/a/text()它卡在第一个<a ...>节点的文本上,所以当我按回车键时,它不会移动到下一个节点。(顺便说一句,使用FireFox上的Firebug插件来检查元素(

我正在用 C# 编写一个程序,父div 下的div 数量是一个变量,所以我不能在这里使用//div[@class='stream-links']/div[数字]/a/text()因为我需要获取所有这些数字。

我使用 Xpath 的代码是HtmlNodeCollection NODECOL1 = MEDOC.DocumentNode.SelectNodes("//div[@class='stream-links']/div/a[1]");

所以我的问题是:
1(Firebug没有跳到下一个<a...>是否有特殊原因,或者它是插件方面的"错误"?
2(我的代码仍然可以工作还是我需要以其他方式处理它?

我的

其余代码有一些不对劲的地方,所以我看不到我的那部分代码是否真的有效,如果我现在可以自己测试它,就不会问问题 2。

为什么当我添加 /text() 时,我的 XPath 会卡在第一个结果上

对于您的 HTML,此 XPath 选择三个a元素:

//div[@class='stream-links']/div/a

此 XPath 选择三个文本节点:

//div[@class='stream-links']/div/a/text()

此 XPath 选择一个a元素:

//div[@class='stream-links']/div/a[1]

我使用 Xpath 的代码是 HtmlNodeCollection NODECOL1 = 梅多克。DocumentNode.SelectNodes("//div[@class='stream-links']/div/a[1]"(;

1(Firebug没有跳到下一个有什么特殊的原因吗? 还是插件方面的"错误"?

//div[@class='stream-links']/div/a[1]只选择一个a元素。

2(我的代码仍然可以工作,还是我需要在 另一种方式?

我的其余代码有一些不对劲的地方,所以我看不到 如果我的代码的那部分真的有效与否,不会问问题 2 如果我现在能自己测试一下。

鉴于您向我们展示的内容,这不是一个合理的问题。 也许知道上述XPaths返回的内容将帮助您自己回答。