Html敏捷包c#段落解析问题

问题描述:

我有几个问题与我的代码,我试图从页面拉每个段落,但目前它只是选择最后一段。Html敏捷包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; 
} 
+0

我花了一段时间来弄明白。看看他在循环中做了什么。 – Oded 2011-01-20 22:02:11

+0

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