Есть ли более быстрый способ декодирования символов html в строку, чем Html.fromHtml()?

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

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

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

Редактировать: Так как не существует встроенного метода, который был бы более быстрым или создан специально для производительности, я буду награждать каждого, кто может указать мне в направлении библиотеки, которая:

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

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

6 ответов

Решение

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

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

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

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

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

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

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

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

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

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

Я надеюсь, что это помогает.

Другие вопросы по тегам