C #, Agilité HTML, Sélection de chaque paragraphe dans une balise div

c# html html-agility-pack

Question

Comment puis-je sélectionner chaque paragraphe dans une balise div par exemple.

<div id="body_text">
<p>Hi</p>
<p>Help Me Please</P>
<p>Thankyou</P>

J'ai HTML Agility téléchargé et référencé dans mon programme, tout ce dont j'ai besoin, ce sont les paragraphes. Il peut y avoir un nombre variable de paragraphes et de nombreuses balises div, mais je n'ai besoin que du contenu contenu dans body_text. Ensuite, je suppose que cela peut être stocké en tant que chaîne que je veux ensuite écrire dans un fichier .txt pour référence ultérieure. Je vous remercie.

Réponse acceptée

Le XPATH valide pour votre cas est //div[@id='body_text']/p

foreach(HtmlNode node in yourHTMLAgilityPackDocument.DocumentNode.SelectNodes("//div[@id='body_text']/p")
{
  string text = node.InnerText; //that's the text you are looking for
}

Réponse populaire

Voici une solution qui récupère les paragraphes sous forme d'énumération de HtmlNodes:

HtmlDocument doc = new HtmlDocument();
doc.Load("your.html");
var div = doc.GetElementbyId("body_text");
var paragraphs = div.ChildNodes.Where(item => item.Name == "p"); 

Sans Linq explicite:

HtmlDocument doc = new HtmlDocument();
doc.Load("your.html");
var div = doc.GetElementbyId("body_text");
var paragraphs = div.ChildNodes.Where(item => item.Name == "p"); 



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