Html Agility Pack - Obtener fragmento HTML de un documento html

c# html html-agility-pack

Pregunta

Usando el paquete de agilidad html; ¿Cómo puedo extraer un "fragmento" html de un documento html completo? Para mis propósitos, un "fragmento" html se define como todo el contenido dentro de las etiquetas <body> .

Por ejemplo:

Entrada de muestra:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

Salida deseada:

<p>My content</p>

Idealmente, me gustaría devolver el contenido sin alteraciones si no contenía un elemento <html> o <body> (por ejemplo, supongamos que me pasaron un fragmento en primer lugar si no era un documento html completo)

¿Alguien puede señalarme en la dirección correcta?

Respuesta aceptada

Creo que necesitas hacerlo en pedazos.

puede hacer selectnodes de documento para el cuerpo o html de la siguiente manera

doc.DocumentNode.SelectSingleNode("//body") // returns body with entire contents :)

luego puede verificar los valores nulos para los criterios y, si se proporciona, puede tomar la cadena como está.

Espero eso ayude :)


Respuesta popular

Lo siguiente funcionará:

public string GetFragment(HtmlDocument document)
{
   return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}


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é