Html Agility Pack c#段解析問題


我的代碼有幾個問題,我試圖從頁面中提取每個段落,但目前只選擇最後一段。

這是我的代碼。

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

一般承認的答案

在循環中,您將獲取當前節點innerText並將其分配給標籤。你對每個節點都這樣做,所以當然你只看到最後一個 - 你沒有保留以前的節點。

嘗試這個:

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

熱門答案

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;
}




許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因