Существует ли более быстрый способ декодирования символов html в строку, чем Html.fromHtml ()? - PullRequest
21 голосов
/ 01 декабря 2010

Я использую Html.fromHtml (STRING) .toString () для преобразования строки, которая может содержать или не содержать html и / или html-объекты, в строку в виде простого текста.

Это довольномедленно, я думаю, что мой последний расчет был то, что это заняло около 22 мсек.С большой партией их можно добавить за минуту.Поэтому я ищу более быстрый вариант с улучшенной производительностью.

Есть ли способ ускорить это или есть другие варианты декодирования?

Редактировать: Поскольку нетПохоже, что это не встроенный метод, который быстрее или создан специально для производительности, я вознагражу его за вознаграждение любому, кто может указать мне направление на библиотеку, которая:

  • Хорошо работает с Android
  • Лицензия для бесплатного использования
  • Быстрее, чем Html.fromHtml(String).toString();

Как примечание, я уже пробовал Jsoup с помощью этого метода: Jsoup.parse(String).text() и он был медленнее.

Ответы [ 6 ]

35 голосов
/ 03 февраля 2011

Как насчет org.apache.commons.lang.StringEscapeUtils's unescapeHtml () .Библиотека доступна на сайте Apache .

(РЕДАКТИРОВАТЬ: июнь 2019 г. - см. Ниже комментарии об обновлениях библиотеки)

3 голосов
/ 19 января 2011

fromHtml() не имеет высокопроизводительного анализатора HTML, и я понятия не имею, насколько быстрой является реализация toString() на SpannedString.Я сомневаюсь, что оба были разработаны для вашего сценария.

В идеале, строки чистые, прежде чем они доберутся до телефона с низким энергопотреблением.Либо очистите их в процессе сборки (для ресурсов / ресурсов), либо очистите их на сервере (перед их загрузкой).

Если по какой-либо причине вам абсолютно необходимо очистить их наустройство, возможно, вы можете использовать NDK для создания библиотеки C / C ++, которая сделает уборку за вас быстрее.

2 голосов
/ 16 октября 2014

Это невероятно быстрый и простой вариант: Unbescape

Это значительно улучшило нашу производительность синтаксического анализа, которая требует прохождения каждой строки через декодер.

0 голосов
/ 03 февраля 2011

Хотя я еще не пробовал их, я нашел несколько возможных решений:

  1. HTML-парсеры Java
  2. Разбор HTML
  3. Больше разбора HTML

Надеюсь, это поможет.

0 голосов
/ 02 февраля 2011

С большой партией можно добавить более минуты

Любой анализ займет некоторое время. 22мс кажется мне быстрым. Во всяком случае, вы можете сделать это в фоновом режиме? Может ли вам помочь какое-то кеширование?

0 голосов
/ 31 января 2011
...