Unmarshalling XML-файлы в Java-объекты в Android?

Я использую API в Интернете, который объединяет объекты в файлы XML. Учитывая, что XSD-файлы также доступны, я хотел бы иметь возможность отменить их обратно в объекты Java после загрузки файлов.

Посмотрев вокруг, похоже, что JAXB является библиотекой по умолчанию для этого в Java, но поскольку я разрабатываю мобильное приложение, дополнительная зависимость 8.6MB просто неприемлема. Я также нашел XStream , но он все еще весит 7,9 МБ.

Похожая на Android SDK, похоже, что единственным реальным синтаксическим анализатором XML является SAX .

Итак, вот вопрос:

  1. Есть ли способ заставить SAX делать то, что я хочу?
  2. Есть ли еще один инструмент в Android SDK, который я пропустил?
  3. Есть ли другая библиотека (это значительно меньше), которая сделает это?

Благодарю.

Solutions Collecting From Web of "Unmarshalling XML-файлы в Java-объекты в Android?"

Существует множество инструментов для перевода объектов между Java и XML, но ни один из тех, с которыми я знаком, не меньше тех, которые вы нашли. Однако, в зависимости от сложности вашего графика объекта, SAX может быть всем, что вам нужно, и у него очень мало накладных расходов. Хитрость заключается в том, чтобы построить граф объектов непосредственно внутри обработчиков событий SAX. Я использовал эту технику в нескольких проектах, прежде чем XML-маршалисты были настолько широко доступны, и, хотя для этого требуется немного больше работы, она эффективна.

Существует платформа, которая будет работать на Android, которая связывает Java с XML с помощью аннотаций аналогично JAXB, она называется Simple и весит менее 270K, это крошечная доля того, что требуется для XStream или JAXB. Кроме того, он не имеет внешних зависимостей, только один JAR, и все должно работать. Ниже приведена ссылка на Simple и XML-сериализацию для Java.

http://simple.sourceforge.net

Это также может обрабатывать циклы в графах объектов.

XStream – 431k. Вам не нужен весь почтовый индекс в вашем приложении для Android. Если вы добавите парсер xpp3 pull для более высокой производительности, он добавит 24k. Это займет весь ваш пакет до 455 тыс. Все еще не идеально, но я мог бы жить с этим.

Kxml2-2.2.2 – симпатичная небольшая библиотека (43K), которая работает на JavaME, вытягивает парсинг, и я успешно использовал его. Единственная его зависимость – xmlpull, которая равна 8k. Как это для малого?

Предостережение заключается в том, что он не имеет привязывающей магии.

В Android SDK также доступны SAX, DOM-парсер и XMLPullParser.

Если вы не хотите полностью строить структуру данных в памяти, DOM может облегчить вашу боль – пока скорость и объем памяти – это цена, которую вы готовы заплатить.

У нас есть продукт под названием XBinder, который генерирует классы и кодирует / декодирует код из XSD. Версия 2.1 занимает около 187 тыс. Версия 2.2 (выходит в октябре 2010 года) занимает около 101 тыс. (И несколько проще в использовании с Android, чем v2.1). Проверьте это здесь .