2010-10-05 1 views
1

В моем приложении для Android мне нужно извлечь данные из XML-файла (файл будет иметь менее 2000 строк). У меня нет опыта анализа XML, поэтому я не знаю, что такое лучший подход. Парсер DOM, возможно, не очень хороший вариант, потому что я на мобильном устройстве. С другой стороны, с SAX я, вероятно, закончил бы более сложный код. Чтобы вы посоветовали?Какой Java-синтаксический анализатор XML извлекает данные из файла 2000 строк (на мобильном устройстве)

+0

Возможный дубликат: http://stackoverflow.com/questions/1351218/unmarshalling-xml-files-into-java-objects-in-android –

ответ

1

Зависит именно от того, что вы хотите извлечь, но для небольших документов я не думаю, что DOM слишком плох, и он поставляется в комплекте с JDK (я тоже думаю об андроиде). Для максимального удобства я бы использовал JAXB, чтобы привязываться к Java-компонентам; он использует SAX-анализатор по умолчанию и более эффективен, чем использование DOM-деревьев (а также более простой в использовании).

В противном случае я бы посмотрел на парсеры; Android-корабли с xpp, что нормально, но Woodstox - мой любимый.

+0

Я делаю приложение планирования путешествия, и мне нужно разобрать jurneys из xml, который я получаю с сервера. – fhucho

+2

JAXB сейчас не является вариантом для Android. –

+0

Я буду использовать DOM пока. Когда все работает, и он будет медленным, я переписал код SAX или вытащил парсер. – fhucho

1

Если вы знаете XPath, то это опция. Я не знаю, даст ли вам лучшую производительность по сравнению с парсером.

Для парсеров я бы рекомендовал использовать анализатор SAX. С ним обычно довольно легко работать. Если вы продлеваете DefaultHandler, существует множество функций, которые вы можете переопределить и использовать для своих целей. Некоторые из них включают:

void startElement() - называется для каждого начального тега, вызов функции проходит также в атрибутах в качестве аргумента

void characters() - призыв к содержанию внутри тега

void endElement() - называется для каждого конечного/закрытия тега

См. Ссылку API для получения дополнительной информации.

1

Существует 3 варианта разбора XML на Android, по умолчанию, DOM, SAX и PullParser. Нет правильного ответа, который лучше всего использовать, это зависит от вашего приложения. Вы можете найти информацию обо всех их here.

Если его что-то произойдет, возможно, стоит использовать SAX или pull parser для повышения эффективности.

Смежные вопросы