Html Agility Pack c#段落解析问题

时间:2011-01-20 21:31:05

标签: c# html html-agility-pack

我的代码存在一些问题,我试图从页面中提取每个段落,但目前只选择最后一段。

这是我的代码。

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

2 个答案:

答案 0 :(得分:4)

在循环中,您将获取当前节点innerText并将其分配给标签。你这样做是为了每个节点,所以当然你只看到最后一个 - 你没有保留以前的节点。

试试这个:

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

答案 1 :(得分: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;
}