HTML敏捷包C#-为一行(而不是整个表)选择单元格

本文关键字:单元格 选择 一行 C#- HTML | 更新日期: 2023-09-27 18:28:40

我在控制台应用程序中使用HTML敏捷包来解析某个网页。

我设法找到了要查找的表,然后选择了所有行。到目前为止,一切都很顺利。

我的代码如下:

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,但只会得到一个错误。有什么提示我做错了什么吗?

HTML敏捷包C#-为一行(而不是整个表)选择单元格

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

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

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

有关XPATH表达式的详细信息,请参阅此处的XPATH语法。