Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Html Agility Pack c段落解析问题_C#_Html_Html Agility Pack - Fatal编程技术网

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来实例化正确的类。