2011-01-20 73 views
1

我有幾個問題與我的代碼,我試圖從頁面拉每個段落,但目前它只是選擇最後一段。Html敏捷包c#段落解析問題

這是我的代碼。

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p")) 
{ 
    string text = node.InnerText; 
    lblTest2.Text = text; 
} 

回答

4

在循環中,您將採用當前節點innerText並將其分配給標籤。你這樣做到每個節點,所以當然你只能看到最後一個節點 - 你不保留以前的節點。

試試這個:

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p")) 
{ 
    string text = node.InnerText; 
    lblTest2.Text += text + Environment.NewLine; 
} 
1

IMO,XPath是沒有趣的。我建議使用LINQ語法代替:

foreach (var node in doc.DocumentNode 
    .DescendantNodes() 
    .Single(x => x.Id == "body") 
    .DescendantNodes() 
    .Where(x => x.Name == "p")) 
{ 
    string text = node.InnerText; 
    lblTest2.Text = text; 
} 
+0

我花了一段時間來弄明白。看看他在循環中做了什麼。 – Oded 2011-01-20 22:02:11

+0

@付款,啊,是的,很好,趕上。 – 2011-01-20 22:42:08