Случайно я работаю над подобной темой. Я не говорю вам никаких авторитетных заявлений, так как это слишком рано. Для начала я взял 3 двигателя:
Конечно, вариантов гораздо больше (даже я однажды написал простую программу просмотра html для Palm OS), но это, похоже, хорошее начало.
Majestic не предлагал Html-> преобразование текста, просто пример кода, как пройти через строку html. Для начала я реализовал тривиальное преобразование:
- Написать все текстовые узлы
- Преобразование
в "\ n \ n" и
в "/ n"
- Игнорирование всего остального
Затем я собрал образец из 50+ HTML-файлов и преобразовал их, используя все 3 метода. Я должен сказать, что я не был доволен ни одним из методов. Два общих замечания:
- Результаты Majestic и Agility были удивительно похожи
- Метод регулярных выражений был на порядок медленнее.
Итак, я посмотрел код Regex и обнаружил бессмысленный цикл внизу. После простой оптимизации метод Regex стал только на ~ 25% медленнее. Учитывая, что он выполняет более 30 сложных замен Regex, я посчитал это хорошим результатом.
Затем я написал тестовый html-файл, содержащий все общие html-тэги и немного больше. Как и прежде, Majestic и Agility действовали аналогично.
- Все двигатели в порядке: h1, p, теги написаны как текст
- Все двигатели вышли из строя: h2 +, hr, b
- br: регулярное выражение не удалось, Majestic в порядке
- Списки: регулярное выражение в порядке, Majestic не удалось
- Простая таблица 2x2: регулярное выражение в норме, Majestic не удалось
Есть еще много чего проверить. Например кодировка.
В данный момент я бы только сказал, что Regex кажется лучшей альтернативой. Однако ни один из упомянутых двигателей не работает удовлетворительно. Положительным моментом является то, что настроить эти движки (особенно Majestic и Regex) легко. Может быть, то же самое относится и к Agility, однако я недостаточно глубоко изучил пакет, чтобы сказать это.