当行数不可预测时,如何对特定表的特定列中的值求和?请注意,标题行包含文本并使用"“而不是"”。
使用下面的示例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# )
我有HAP1.4.6的CHM文件,并且我尝试在Visual Studio的对象浏览器中导航HtmlAgilityPack,但是我不明白我在那里看到的是什么。请告诉我一些可以帮助我入门的资源。如果能对我正在尝试做的事情有更多的线索,我将非常感激。
也谢谢你!
发布于 2013-05-07 04:20:44
如果我理解正确的话,您想要第一个表的最后一列(跳过第一行)的总和。
var sum = doc.DocumentNode.SelectSingleNode("//table")
.Elements("tr")
.Skip(1)
.Sum(tr => int.Parse(tr.Elements("td").Last().InnerText));这将返回74
https://stackoverflow.com/questions/16406331
复制相似问题