使用c#和html- agile -pack在html表中添加Sum列

本文关键字:添加 Sum html html- agile -pack 使用 | 更新日期: 2023-09-27 18:12:17

当行数不可预测时,如何对特定表的特定列中的值求和?注意,标题行包含文本,并使用"而不是"。

使用下面的html示例,我希望对第一个表的第四列的值求和,并忽略所有其他表。

我假设第一步是获得第一个表中的行数,下一步是构造一个计算,执行忽略第一行的求和。

HTML例子;

<html>
<head>
<title>Tables</title>
</head>
<body>
<table border="1">
  <tr>
    <td>Name</td>
    <td>Phone</td>
    <td>City</td>
    <td>Number</td>
  </tr>
  <tr>
    <td>Scott</td>
    <td>555-2345</td>
    <td>Chicago</td>
    <td>42</td>
  </tr>
  <tr>
    <td>Bill</td>
    <td>555-1243</td>
    <td>Detroit</td>
    <td>23</td>
  </tr>
  <tr>
    <td>Ted</td>
    <td>555-3567</td>
    <td>Columbus</td>
    <td>9</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <td>Name</td>
    <td>Year</td>
  </tr>
  <tr>
    <td>Abraham</td>
    <td>1865</td>
  </tr>
  <tr>
    <td>Martin</td>
    <td>1968</td>
  </tr>
  <tr>
    <td>John</td>
    <td>1963</td>
  </tr>
</table>
<p></p>
</body>
</html>

这里是我用于其他目的的参考代码-(获取表计数)。

namespace ConsoleApplication2
{
class Program
{
    static void Main(string[] args)
    {
        String html = "C:/TestFile.html";
        HtmlDocument doc = new HtmlDocument();
        doc.Load(html);
        int count = doc.DocumentNode.SelectNodes("//table").Count;
        // output to Console
        Console.WriteLine(count.ToString());
        Console.ReadLine();
    }
}
}

谢谢!

还有一件事……您是否可以建议一些资源来帮助我理解语法,这样我就可以获得一点独立性。(我是HTML-Agility Pack的新手,几年前我用过一点c#)

我有HAP 1.4.6的CHM文件,我试图在Visual Studio的对象浏览器中导航HtmlAgilityPack,但我不明白我在那里看到的是什么。请告诉我一些可以帮助我开始的资源。如果你能给我提供更多的线索,我将不胜感激。

谢谢!

使用c#和html- agile -pack在html表中添加Sum列

如果我理解正确的话,您想要的是第一个表的最后一列(跳过第一行)的和。

 var sum = doc.DocumentNode.SelectSingleNode("//table")
              .Elements("tr")
              .Skip(1)
              .Sum(tr => int.Parse(tr.Elements("td").Last().InnerText));

返回74