Html Agility Pack c#段解析问题

c# html html-agility-pack

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

这是我的代码。

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 with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因