Comment supprimer des lignes vides de HTML avec HTMLAgilityPack?

c# html html-agility-pack

Question

J'ai un document HTML qui contient beaucoup de lignes vierges inutiles que je voudrais supprimer. Voici un exemple du code HTML:

<html>

<head>


</head>

<body>

<h1>Heading</h1>

<p>Testing

J'ai essayé le code suivant mais il a supprimé chaque nouvelle ligne, je veux juste supprimer celles qui sont des lignes vides.

<html>

<head>


</head>

<body>

<h1>Heading</h1>

<p>Testing

Une idée de comment faire cela avec HTMLAgilityPack? Merci, J.

Réponse acceptée

Je ne pense pas que HTMLAgilityPack propose actuellement une solution native pour cela.

Pour de tels scénarios, j'utilise le regex suivant:

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

Cela préserve correctement les espaces et les fins de ligne, tout en condensant plusieurs onglets, nouvelles lignes et espaces.


Réponse populaire

Une manière possible en utilisant 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
                           );
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi