在c#中使用contains搜索节点

时间:2014-03-13 19:18:29

标签: c# linq

我正在尝试从HTML输入搜索所有以searchResult1,searchResult2开头的节点,直到我的C#程序中的searchResult10。这是我的代码

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

1 个答案:

答案 0 :(得分:2)

如果您可以使用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()