Подтвердить что ты не робот

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

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

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

Ответ 2

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

http://simple.sourceforge.net

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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