Html Agility Pack - 行と列をループする


質問

属性IDまたは名前を持つテーブルと行をループして、各TDセルの内側のテキストを深く取得するにはどうすればよいですか?私はasp.net、C#、そして最新のhtmlアジリティパッケージを扱っています。ご案内ください。ありがとうございました。

htmlファイルにはいくつかのテーブルがあります。そのうちの1つにid = main-attributeという属性があります。その識別された表には、多くの行があります。これらの行の中には、同じ属性名=表示を持つものがあります。これらの名前の行には、テキストを抽出する必要がある列が多数あります。このようなもの:

<body>
<table>
...
</table>
<table>
...
</table>

<table id="main-part">
   <tr>
     <td></td>
     ...
   </tr>
   <tr>
     <td></td>
     ...
   </tr>
   <tr name="display">
     <td>Jan</td>
     <td>Feb</td>
     <td>Mar</td>
     ...
   </tr>
      <tr name="display">
     <td>Apr</td>
     <td>May</td>
     <td>June</td>
     ...
   </tr>
      <tr name="display">
     <td>Jul</td>
     <td>Aug</td>
     <td>Sep</td>
     ...
   </tr>
   <tr>
     <td></td>
     ...
   </tr>
   <tr name="display">
     <td>Oct</td>
     <td>Nov</td>
     <td>Dec</td>
     ...
   </tr>
   <tr>
     <td></td>
     ...
   </tr>
</table>
<table>
...
</table>
</body>

受け入れられた回答

xpathを使用してこれらのノードを選択する必要があります。

foreach(HtmlNode cell in doc.DocumentElement.SelectNodes("//tr[@name='display']/td")
{
   // get cell data
}

人気のある回答

出来た!大変ありがとうございました。

    HtmlDocument doc = new HtmlDocument();
         doc.Load(@"C:/samplefolder/sample.htm"); 
foreach(HtmlNode cell in doc.DocumentNode.SelectNodes("//tr[@name='display']/td")) 
{
         string test = cell.InnerText;
         Response.Write(test); 
}

JanFebMarAprMayJuneJulAugSepOctNovDecのような結果を示しました 。どのように並べ替えることができますか、スペースやタブで区切りますか?ありがとうございました。





ライセンスを受けた: CC-BY-SA
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ