C #, Html Agility, seleccionando cada párrafo dentro de una etiqueta div

c# html html-agility-pack

Pregunta

¿Cómo puedo seleccionar cada párrafo en una etiqueta div, por ejemplo.

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

He descargado y referenciado Html Agility en mi programa. Todo lo que necesito son los párrafos. Puede haber un número variable de párrafos y hay muchas etiquetas div diferentes, pero solo necesito el contenido dentro del body_text. Luego asumo que esto se puede almacenar como una cadena que luego quiero escribir en un archivo .txt para una referencia posterior. Gracias.

Respuesta aceptada

El XPATH válido para su caso es //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
}

Respuesta popular

Aquí hay una solución que atrapa los párrafos como una enumeración 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"); 

Sin Linq explícito:

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


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué