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;
}
我花了一段时间来弄明白。看看他在循环中做了什么。 – Oded 2011-01-20 22:02:11
@付款,啊,是的,很好,赶上。 – 2011-01-20 22:42:08