0

我在我的控制台应用程序中使用 HTML Agility Pack 来解析某个网页。

我设法得到我正在寻找的表,然后选择所有行。到那时,一切都很好。

我的代码如下所示:

var rows = table.SelectNodes("//tr");
foreach(var row in rows)
{
    var cells = row.SelectNodes("//td");
    Console.WriteLine(cells.Count);

    foreach(var cell in cells) {
        // Do something
   }
}

在每一行中,我应该有 4 个单元格,而不是 697(整个表中的单元格数)。我尝试使用/td .//td但我只会得到一个错误。任何提示我做错了什么?

4

1 回答 1

1

您的第二个//td选择递归地选择(两个/)并从顶部(表达式以 a 开头/)。你想要的更像是这样的:

var cells = row.SelectNodes(".//td");

这意味着从当前上下文/节点 ( .) 中递归选择。

有关 XPATH 表达式的更多信息,请参见此处的XPATH 语法

于 2013-08-23T08:11:23.173 回答