HtmlAgilityPack и HtmlDecode

html-agility-pack

Вопрос

В настоящее время я использую HtmlAgilityPack с консольным приложением для очистки веб-сайта. Поскольку html закодирован (он возвращает закодированные символы, такие как ' ), я должен декодировать, прежде чем я сохраню содержимое в моей базе данных.

Есть ли способ декодировать возвращенный html с помощью HtmlAgilityPack без использования HttpUtility.HtmlDecode? Я хочу, чтобы избежать добавления System.Web в консольное приложение, если это возможно.

Принятый ответ

Html Agility Pack HtmlEntity классом утилиты HtmlEntity . Он имеет статический метод со следующей подписью:

    /// <summary>
    /// Replace known entities by characters.
    /// </summary>
    /// <param name="text">The source text.</param>
    /// <returns>The result text.</returns>
    public static string DeEntitize(string text)

Он поддерживает известные объекты (например, &nbsp; ) и закодированные символы, такие как &#039; также.


Популярные ответы

Просто добавив свои 2 цента: я провел некоторые тесты производительности с использованием класса StopWatch и обнаружил, что HttpUtility.HtmlDecode примерно на 15-20% быстрее, чем метод DeEntitize . Также DeEntitize имеет некоторые ошибки (см. Комментарии выше).

Поэтому, возможно, ссылки на System.Web не так уж плохи.

Если вы пишете приложение, которое уже предназначено для «.NET full» (в отличие от «.NET Client Profile» - это легкая версия), я бы пошел на ссылку System.Web.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему