Html Agility Pack c # problema de análisis de párrafos

c# html html-agility-pack

Pregunta

Tengo un par de problemas con mi código, estoy tratando de extraer cada párrafo de una página, pero en este momento solo está seleccionando el último párrafo.

Aquí está mi código.

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

Respuesta aceptada

En su bucle, está tomando el nodo actual, texto interior y asignándolo a la etiqueta. Le hace esto a cada nodo, por lo que, por supuesto, solo ve el último, no está conservando los anteriores.

Prueba esto:

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

Respuesta popular

OMI, XPath no es divertido. Recomiendo usar la sintaxis LINQ en su lugar:

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;
}


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é