В настоящее время я использую HtmlAgilityPack с консольным приложением для очистки веб-сайта. Поскольку html закодирован (он возвращает закодированные символы, такие как '
), я должен декодировать, прежде чем я сохраню содержимое в моей базе данных.
Есть ли способ декодировать возвращенный html с помощью HtmlAgilityPack без использования HttpUtility.HtmlDecode? Я хочу, чтобы избежать добавления System.Web в консольное приложение, если это возможно.
Пакет Html Agility оснащен утилитарным классом 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)
Он поддерживает общеизвестные объекты (например,
) и закодированные символы, такие как '
также.
Просто добавив свои 2 цента: я провел некоторые тесты производительности с использованием класса StopWatch
и обнаружил, что HttpUtility.HtmlDecode
примерно на 15-20% быстрее, чем метод DeEntitize
. Также DeEntitize
имеет некоторые ошибки (см. Комментарии выше).
Поэтому, возможно, ссылки на System.Web не так уж плохи.
Если вы пишете приложение, которое уже предназначено для «.NET full» (в отличие от «.NET Client Profile» - это легкая версия), я бы пошел на ссылку System.Web.