Суммировать столбец в html-таблице с использованием C# и html-agility-pack

Как суммировать значения в определенном столбце определенной таблицы, когда количество строк непредсказуемо? Обратите внимание, что строка заголовка содержит текст и использует "" вместо "".

Используя пример 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# несколько лет назад)

У меня есть файл CHM для HAP 1.4.6, и я пытался перемещаться по HtmlAgilityPack в обозревателе объектов Visual Studio, но не понимаю, что я там вижу. Пожалуйста, направьте меня на некоторые ресурсы, которые могут помочь мне начать. Я был бы очень признателен, если бы у меня было немного больше информации о том, что я пытаюсь сделать.

Тебе тоже спасибо!


person user1944272    schedule 06.05.2013    source источник


Ответы (1)


Если я вас правильно понимаю, вам нужна сумма последнего столбца (пропуская первую строку) первой таблицы.

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

Это возвращает 74

person EZI    schedule 06.05.2013
comment
Спасибо! Но я хотел бы понять, как это работает, чтобы я мог получить сумму определенного столбца, который может быть не последним, или из таблицы, которая может быть не первой. (То, что я предоставил, было образцом.) Не могли бы вы предложить некоторые ресурсы, которые могут помочь мне в этом. Пожалуйста, смотрите последние два абзаца моего исходного сообщения. - person user1944272; 07.05.2013