Comment réparer les balises html (qui manque le Et balises) avec HTMLAgilityPack

c# dom html-agility-pack

Question

J'ai un code HTML avec <div><h1> hello Hi</div> <div>hi </p></div>

Sortie requise: <div><h1> hello </h1></div> <div><p>hi </p></div>

L'utilisation du pack d'agilité HTML est-il possible de résoudre ce type de problèmes similaires avec des balises de fermeture et d'ouverture manquantes?

Réponse acceptée

La bibliothèque n'est pas assez intelligente pour créer l'ouverture p où vous la mettez, mais est assez intelligente pour créer le h1 manquant. Et en général, il crée du code HTML valide toujours, mais pas toujours celui attendu.

Donc ce code:

        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);

va vider ceci:

<div><h1> hello Hi</h1></div> <div>hi <p></div>

Ce qui n'est pas ce que vous voulez, mais c'est du HTML valide. Vous pouvez également ajouter un petit truc comme ceci:

        HtmlNode.ElementsFlags["p"] = HtmlElementFlag.Closed;
        HtmlDocument doc = new HtmlDocument();
        doc.Load(yourhtml);
        doc.Save(Console.Out);

cela videra ceci:

<div><h1> hello Hi</h1></div> <div>hi <p></p></div>

Réponse populaire

Lorsque vous HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml) HTMLAgilityPack corrige automatiquement les balises pour vous, et vous pouvez ensuite accéder à ces balises à l'aide de: HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow