2015-02-07 73 views
0

我一直有一些困難找到一種有效的方法來解析這個HTML文件使用HtmlAgilityPack。我可以閱讀所有的內容,但是我這樣做的方式非常瑣碎,我希望得到一些建議,甚至是一些複製麪食,如果我敢問,這樣我就可以有效地讀取數據。HtmlAgilityPack解析表

private void ParsePage(string html) 
    { 
     var doc = new HtmlDocument(); 
     doc.LoadHtml(html); 
     if (doc.DocumentNode != null) 
     { 
      var gameTypes = doc.DocumentNode.SelectNodes("//div[@class='lifetime_stats_header']"); 

      if (gameTypes != null) { 
       foreach (var gt in gameTypes) 
       { 
        if (gt != null && gt.InnerText != null && this.rtbHtmlReceived != null) 
        { 
         this.rtbHtmlReceived.AppendText("Played type : " + gt.InnerText.ToString().Replace(" ", "") + "\n"); 
         this.rtbHtmlReceived.AppendText(
          "dSibSib : " + gt.NextSibling.NextSibling.InnerText.Replace(" ", "") + "\n"); 
        } 
       } 
      } 
     } 
    } 

我打印出目前使用的是什麼我有,

Wins885 
Kills3,805 
Assists4,140 
MinionKills92,536 
NeutralMinionKills16,739 
TurretsDestroyed741 

其中來自看起來像

     <tbody> 
         <tr><td class="lifetime_stats_key">Wins</td><td class="lifetime_stats_val">885</td></tr> 
         <tr><td class="lifetime_stats_key">Kills</td><td class="lifetime_stats_val">3,805</td></tr> 
         <tr><td class="lifetime_stats_key">Assists</td><td class="lifetime_stats_val">4,140</td></tr> 
         <tr><td class="lifetime_stats_key">Minion Kills</td><td class="lifetime_stats_val">92,536</td></tr> 
         <tr><td class="lifetime_stats_key">Neutral Minion Kills</td><td class="lifetime_stats_val">16,739</td></tr> 
         <tr><td class="lifetime_stats_key">Turrets Destroyed</td><td class="lifetime_stats_val">741</td></tr> 
         </tbody> 

如何任何建議或指針表循環通過lifetime_stats_val和鍵將是偉大的!不能弄明白:S 我會繼續研究,但我會愛你,你可能有任何答案:P

回答

0

想通弄明白了,

 foreach (var gt in gameTypes.Where(gt => gt != null && gt.InnerText != null && this.rtbHtmlReceived != null)) 
     { 
      var cells = gt.NextSibling.NextSibling.ChildNodes.Descendants("tr"); 
      foreach (var item in cells) 
      { 
       rtbHtmlReceived.AppendText("Type: " + item.FirstChild.InnerText + ": "); 
       rtbHtmlReceived.AppendText("Value: " + item.LastChild.InnerText + "\n"); 
      } 
     }