Синтаксический анализ XML с помощью SAX: как обрабатывать html как текст в тегах xml

Я получаю ответ xml от внешнего сервера.

Используя некоторые учебные пособия, я заставил работать SAX-Parser.

Осталась небольшая проблема.

В ответе есть, например. тег описания, содержащий html, например:

<description><p><strong>Title</strong></p>Description</description> 

После разбора поле описания моего объекта содержит только "‹".

Можно ли сказать моему парсеру обрабатывать html как обычный текст?

Или, может быть, есть другие возможности решить эту проблему.

Спасибо.


person Tima    schedule 06.11.2011    source источник


Ответы (2)


поскольку вы не включаете свой код, я должен представить, что вы написали. распространенная ошибка в реализациях обработчиков SAX не обрабатывает тот факт, что текст элемента может быть возвращен в нескольких вызовах метода character(). вам нужно объединить их все вместе, пока вы не получите событие endElement().

person jtahlborn    schedule 06.11.2011
comment
Мой код очень похож на код из этого ответа stackoverflow.com/questions/3109158/ Я стараюсь включать важные части - person Tima; 06.11.2011
comment
Я сделал то, что вы написали, и это работает. Спасибо. Но должен ли я делать эту агрегацию для всех тегов? Или только если я думаю, что он может иметь специальные символы? Потому что у меня не было проблем с другими тегами. Они были полны - person Tima; 06.11.2011
comment
вы всегда должны делать это для каждого тега. все остальное является ошибкой, ожидающей своего появления (анализатор sax никогда не требуется, чтобы дать вам весь текст в одном событии). - person jtahlborn; 06.11.2011

Помимо решения проблемы SAX, вы можете вместо этого использовать решение Stax (javax.xml.stream): оно так же производительно, как SAX, но часто немного удобнее. Вы также можете принудительно объединить текстовое содержимое (XMLInputFactory.IS_COALESCING), чтобы избежать проблем, подобных тем, с которыми вы сталкиваетесь при использовании SAX.

person StaxMan    schedule 06.11.2011
comment
Я должен посмотреть, доступна ли эта библиотека для Android. Почему-то синтаксический анализ json намного забавнее, чем синтаксический анализ xml - person Tima; 07.11.2011
comment
Правильно -- я почти уверен, что Woodstox доступен; Android не включает парсер stax в свой комплект разработчика. И я полностью согласен с JSON, так намного проще. - person StaxMan; 07.11.2011