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?
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>
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