Как исправить html-теги (в которых отсутствует & теги) с помощью HTMLAgilityPack

c# dom html-agility-pack

Вопрос

У меня есть 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



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow