Html Agility Pack c # Problème d'analyse du paragraphe

c# html html-agility-pack

Question

Mon code pose quelques problèmes, j'essaie de tirer chaque paragraphe d'une page, mais pour l'instant, il ne sélectionne que le dernier paragraphe.

voici mon code.

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

Réponse acceptée

Dans votre boucle, vous prenez le noeud actuel innerText et l'assignez à l'étiquette. Vous faites cela à chaque noeud, vous ne voyez donc que le dernier - vous ne conservez pas les précédents

Essaye ça:

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

Réponse populaire

OMI, XPath n'est pas amusant. Je recommanderais plutôt d'utiliser la syntaxe 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;
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi