У меня есть html с <div><h1> hello Hi</div> <div>hi </p></div>
Требуемый вывод: <div><h1> hello </h1></div> <div><p>hi </p></div>
Используя пакет гибкости HTML, можно ли устранить подобные проблемы с отсутствующими тегами закрытия и открытия?
Библиотека недостаточно интеллектуальна, чтобы создать открытие p
где вы его положили, но он достаточно интеллектуальный, чтобы создать отсутствующий h1
. И вообще, он всегда создает правильный HTML, но не всегда тот, который вы ожидаете.
Итак, этот код:
HtmlDocument doc = new HtmlDocument();
doc.Load(yourhtml);
doc.Save(Console.Out);
сбрасывает это:
<div><h1> hello Hi</h1></div> <div>hi <p></div>
Это не то, что вы хотите, но действительный HTML. Вы также можете добавить небольшой трюк:
HtmlNode.ElementsFlags["p"] = HtmlElementFlag.Closed;
HtmlDocument doc = new HtmlDocument();
doc.Load(yourhtml);
doc.Save(Console.Out);
который сбрасывает это:
<div><h1> hello Hi</h1></div> <div>hi <p></p></div>
При выполнении HtmlAgilityPack.HtmlDocument.LoadHTML(yourhtml)
HTMLAgilityPack автоматически исправляет теги для вас, а затем вы можете получить доступ к этим тегам, используя: HtmlAgilityPack.HtmlDocument.DocumentNode.OuterHTML