2014-03-13 67 views
-1

我想搜索所有節點,從searchResult1,searchResult2開始,直到searchResult10在我的C#程序中從HTML輸入。這裏是我的代碼搜索節點使用包含在C#

var results = hdoc.DocumentNode 
      .Descendants("div") 
      .Where(x => x.Attributes.Contains("id") && 
         x.Attributes["id"].Value.Contains("\"searchResult")).ToList(); 
for (int i = 0; i < results.Count; i++) 
      { 
       rawdata[i] = results[i].InnerHtml.Trim(); 
      } 

我的HTML看起來像這樣

<div id="searchResultTable" class="searchReturnData"> some junk html 
<li id="searchResult1" class="searchResult searchResultsData_OFF"> searchResult1 html </li> 
<li id="searchResult2" class="searchResult searchResultsData_OFF">searchResult2 html </li> 
<li id="searchResult3" class="searchResult searchResultsData_OFF">searchResult3 html </li> 
</div> 

我只想打印searchResult1,searchResult2,searchResult3 HTML,而不是一些垃圾HTML。我怎樣才能做到這一點。

感謝 Rashmi

+3

你想使用HTML像XML嗎?原因不..使用HTML敏捷包代替。 – paqogomez

+0

試過也HtmlNodeCollection totNodes = hdoc.DocumentNode.SelectNodes(「/ li [包含(@ id ='searchResult')]」)我得到錯誤 – Rashmi

+0

「我得到錯誤」告訴​​我們關於你正在運行的問題絕對沒有成。編譯錯誤?運行時異常?意外的行爲?發生了什麼?你期望會發生什麼?你有什麼試圖解決這個問題?請詳細說明。 – tnw

回答

1

,如果你可以使用HTMLAgilityPack解析HTML。你可以做這樣的事情

  HtmlDocument doc = new HtmlDocument(); 
     doc.Load(@"C:\file.html"); 
     var root = doc.DocumentNode; 
     var a_nodes = root.Descendants("li").Where(c=>c.GetAttributeValue("id","") 
         .Contains("searchResult")).ToList()