【问题标题】:Why does my XPath get stuck on first result when I add /text()?当我添加 /text() 时,为什么我的 XPath 卡在第一个结果上?
【发布时间】:2016-05-18 17:16:51
【问题描述】:

这是我尝试在其上使用 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 时,它会选择 &lt;a ...&gt; 节点。每次我按下回车键都会选择下一个,但是当我使用模式//div[@class='stream-links']/div/a/text() 时,它会卡在第一个&lt;a ...&gt; 节点的文本上,所以当我按下回车键时它不会移动到下一个。 (顺便说一句,在 FireFox 上使用 Firebug 插件来检查元素)

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

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

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

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

【问题讨论】:

  • 您能解释一下接受的答案是如何解决您的问题的吗?

标签: c# html xml xpath


【解决方案1】:

对于您的 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 = MEDOC.DocumentNode.SelectNodes("//div[@class='stream-links']/div/a[1]");

1) Firebug 不跳转到下一个是否有特殊原因 还是插件方面的“错误”?

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

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

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

鉴于您向我们展示的内容,这不是一个合理的问题。或许了解上述 XPath 的返回值有助于您自己回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多