C# Html Agility Pack c段落解析问题
我的代码有几个问题,我试图从一页中提取每一段,但目前它只选择最后一段 这是我的密码C# Html Agility Pack c段落解析问题,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我的代码有几个问题,我试图从一页中提取每一段,但目前它只选择最后一段 这是我的密码 foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p")) { string text = node.InnerText; lblTest2.Text = text; } 在我看来,XPath一点也不好玩。我建议改用LINQ语法: foreach (var node in doc.DocumentNode
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p"))
{
string text = node.InnerText;
lblTest2.Text = text;
}
在我看来,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;
}
在我看来,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;
}
在循环中,获取当前节点innerText并将其指定给标签。您对每个节点执行此操作,因此您当然只会看到最后一个节点,而不会保留以前的节点 试试这个:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p"))
{
string text = node.InnerText;
lblTest2.Text += text + Environment.NewLine;
}
在循环中,获取当前节点innerText并将其指定给标签。您对每个节点执行此操作,因此您当然只会看到最后一个节点,而不会保留以前的节点 试试这个:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p"))
{
string text = node.InnerText;
lblTest2.Text += text + Environment.NewLine;
}
我花了一段时间才弄明白。看看他在循环中做了什么。我花了一段时间才弄明白。看看他在循环中做了什么,这有变化吗?doc假设这是一个声明,比如HtmlDocument doc=newhtmldocument;不适合我;具体来说,它没有DocumentNode成员。。。?这是一个全新的HtmlAgilityPack版本1.4.6。0@B.ClayShannon-谢谢;问题是使用HtmlDocument=System.Windows.Forms.HtmlDocument;不知何故,我的using子句中添加了HtmlDocument的通用版本;我必须为要实例化的正确类显式指定HtmlAgilityPack.HtmlDocument。这是否已更改?doc假设这是一个声明,比如HtmlDocument doc=newhtmldocument;不适合我;具体来说,它没有DocumentNode成员。。。?这是一个全新的HtmlAgilityPack版本1.4.6。0@B.ClayShannon-谢谢;问题是使用HtmlDocument=System.Windows.Forms.HtmlDocument;不知何故,我的using子句中添加了HtmlDocument的通用版本;我必须显式地指定HtmlAgilityPack.HtmlDocument来实例化正确的类。