2014-03-13 72 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()