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?
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 :)
Lo siguiente funcionará:
public string GetFragment(HtmlDocument document)
{
return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}