Подтвердить что ты не робот

HtmlAgilityPack и HtmlDecode

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

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

4b9b3361

Ответ 1

Пакет 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)

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

Ответ 2

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

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

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

Ответ 3

Используйте WebUtility, которая не нуждается в какой-либо специальной ссылке.