2015-06-21 155 views
0

我想從div列表中使用HtmlAgilityPack子元素進行刮取。最大的父Div是// div [@ class ='cell in-area-cell middle-cell']如果我只是遍歷列表,我可以顯示每個父罰款的所有子內容。HtmlAgilityPack從div列表中選擇個別元素

但我不想顯示所有的內容,我想從每個孩子中挑選某些div,p和a,但下面的代碼只給我一個第一個列表// a [ @ class ='listing-name']。它給了我正確數量的lstRecords,但它們都具有相同的值。

這裏是我的代碼:

型號:

public class TempSearch 
{ 
    public string listing_name { get; set; } 
} 

查看:

控制:

public ActionResult TempSearch() 
{ 
    string html = Server.MapPath("~/Content/tempsearch.html"); 

    HtmlWeb web = new HtmlWeb(); 
    HtmlDocument document = web.Load(html); 

    List<TempSearch> lstRecords = new List<TempSearch>(); 

    foreach (HtmlNode node in document.DocumentNode.SelectNodes("//div[@class='cell in-area-cell middle-cell']")) 
    { 
     TempSearch tempSearch = new TempSearch(); 

     HtmlNode node2 = document.DocumentNode.SelectSingleNode("//a[@class='listing-name']"); 

     tempSearch.listing_name += node2.InnerHtml.Trim(); 
     lstRecords.Add(tempSearch); 

    } 
    return View(lstRecords); 
} 

我想這與我填寫名單的方式有關?

回答

1

你想使用XPath相對於目前node變量引用,這樣的元素:

HtmlNode node2 = node.SelectSingleNode(".//a[@class='listing-name']"); 

通知的.在的XPath的開頭這表明XPath是相對當前上下文元素SelectSingleNode()方法調用node變量使node作爲當前上下文元素。否則,每次迭代都會一遍又一遍地得到相同的元素。

+0

@Bojangles此答案有任何問題嗎?對你起作用嗎? – har07

+0

感謝har07它工作的一種享受。 – Bojangles

相關問題