C #, Agilità HTML, selezione di ogni paragrafo all'interno di un tag div

c# html html-agility-pack

Domanda

Come posso selezionare ogni paragrafo in un tag div, ad esempio.

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

Ho scaricato Html Agility e ho fatto riferimento nel mio programma, Tutto ciò di cui ho bisogno sono i paragrafi. Ci può essere un numero variabile di paragrafi e ci sono un sacco di tag div differenti ma ho solo bisogno del contenuto all'interno di body_text. Quindi suppongo che questo possa essere memorizzato come una stringa che poi voglio scrivere in un file .txt per un riferimento futuro. Grazie.

Risposta accettata

L'XPATH valido per il tuo caso è //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
}

Risposta popolare

Ecco una soluzione che considera i paragrafi come un'enumerazione di HtmlNodes:

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

Senza Linq esplicita:

var paragraphs = doc.GetElementbyId("body_text").Elements("p");  


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché