Разбор HTML на Android, серьезные проблемы с производительностью

Мне нужно проанализировать около 100 КБ данных HTML, и это просто вызывает огромные проблемы с производительностью на Android. Я пробовал как встроенный XML-парсер, так и JTidy.

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

Я немного погуглил, и JTidy был предложен для очистки кода перед передачей его синтаксическому анализатору XML. Это был абсолютный кошмар, поскольку предварительный анализ JTidy теперь занимает примерно 7 секунд.

Итак, теперь моя единственная альтернатива - регулярное выражение. Что вы думаете?


person Overv    schedule 26.10.2011    source источник
comment
Странно - я все время пытаюсь добавить это в качестве ответа, а вместо этого он попадает в комментарии.   -  person MusiGenesis    schedule 26.10.2011


Ответы (1)


Это зависит от того, являетесь ли вы владельцем html.

Если (как я понял) вы не являетесь владельцем данных html и не можете влиять на их форматирование, то, вероятно, вы найдете эту информацию полезной: Анализировать HTML в Android
Но если HTML действительно плохой, результат не может быть гарантирован. И вы бы предпочли работать с регулярным выражением. Даже браузеры переходят в режим причуд при работе с "плохим" html без гарантии корректности просмотра.

person alexey    schedule 26.10.2011
comment
Поскольку все эти HTML-парсеры невероятно медленны, я написал несколько регулярных выражений, чтобы превратить этот конкретный HTML-код в действительный XML. - person Overv; 27.10.2011