HtmlAgilityPack и HtmlDecode - PullRequest
       8

HtmlAgilityPack и HtmlDecode

48 голосов
/ 12 июля 2011

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

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

Ответы [ 3 ]

93 голосов
/ 14 июля 2011

Html Agility Pack оснащен служебным классом, который называется 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;.

11 голосов
/ 12 мая 2015

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

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

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

1 голос
/ 22 июля 2018

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

...