¿Cómo eliminar líneas en blanco de HTML con HTMLAgilityPack?

c# html html-agility-pack

Pregunta

Tengo un documento HTML que contiene muchas líneas en blanco innecesarias que me gustaría eliminar. Aquí hay una muestra del HTML:

<html>

<head>


</head>

<body>

<h1>Heading</h1>

<p>Testing

He intentado el siguiente código pero eliminé todas las líneas nuevas, solo quiero eliminar las que están en blanco.

static string RemoveLineReturns(string html)
    {
        html = html.Replace(Environment.NewLine, "");
        return html;
    }

¿Alguna idea de cómo hacer esto con HTMLAgilityPack? Gracias, j.

Respuesta aceptada

No creo que HTMLAgilityPack actualmente tenga una solución nativa para eso.

Para tales escenarios uso el siguiente Regex:

html = Regex.Replace(html, @"( |\t|\r?\n)\1+", "$1");

Esto conserva los espacios en blanco y los finales de línea correctamente, al mismo tiempo que condensa múltiples pestañas, nuevas líneas y espacios en blanco en uno solo.


Respuesta popular

Una forma posible de usar Html Agility Pack:

var doc = new HtmlDocument();
//TODO: load your HtmlDocument here

//select all empty (containing white-space(s) only) text nodes :
var xpath = "//text()[not(normalize-space())]";
var emptyNodes = doc.DocumentNode.SelectNodes(xpath);

//replace each and all empty text nodes with single new-line text node
foreach (HtmlNode emptyNode in emptyNodes)
{
    emptyNode.ParentNode
             .ReplaceChild(HtmlTextNode.CreateNode(Environment.NewLine) 
                            , emptyNode
                           );
}


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é