0

HTML は、組み込みの WebControl を使用している WinForm に表示されています。

HTMLAgilityPack を試すことにしました。

var query = from table in doc.DocumentNode.SelectNodes("//table[@class='TABLEBORDER').Cast<HtmlNode>() 
            from row in table.SelectNodes("tr").Cast<HtmlNode>() 
            from cell in row.SelectNodes("th|td").Cast<HtmlNode>() 
            select new {Table = table.Id, CellText = cell.InnerText}; 

foreach(var cell in query) { 
    Console.WriteLine("{0}: {1}", cell.Table, cell.CellText); 
} 

@LB に従ってコードを更新しました。次の出力が得られます

The thread '<No Name>' (0x1e94) has exited with code 0 (0x0).
: 
Target

: 
Triggerenabled?

: 
Account

: 
Passwordchanged?


: 
Error message(if any)

The thread '<No Name>' (0x2564) has exited with code 0 (0x0).

他のデータは、Web コントロールではっきりと表示されます。

4

1 に答える 1

1

このページには他のテーブルがありますが、クラスが「TABLEBORDER」のテーブルにのみ興味があります。

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var table = doc.DocumentNode.SelectSingleNode("//table[@class='TABLEBORDER']");

編集

var res = table.Descendants("tr")
               .Select(tr => tr.Descendants("td")
                               .Select(td => td.InnerText)
                               .ToList())
               .ToList();

EDIT2

foreach (List<string> tr in res)
{
    foreach (string td in tr)
    {
        Console.Write("[{0}] ", td);
    }
    Console.WriteLine();
}
于 2012-08-21T19:47:24.817 に答える