Android и Google App Engine: доступен ли инструмент связывания XML? - PullRequest
5 голосов
/ 14 февраля 2010

Веб-служба XML REST (не JSON!) Должна обмениваться указанным XML-схемой XML между Google App Engine и приложением Android.

Я хотел использовать XStream для обоих, однако я не мог заставить его работать на Google App Engine, поэтому для меня Apache XMLBeans является следующим лучшим выбором (JAXB не работает на обоих). Однако с Google App Engine проблем нет, но на Android я получаю несколько серьезных исключений (например, из-за использования Stax API с его пакетами javax.xml. *).

Итак,

  1. Существует ли какая-либо другая возможность связывания XML для потоковой передачи документов XML на GAE и Android?
  2. Если нет, то можно ли установить Apache XMLBeans для работы с Android?

Спасибо!

Ответы [ 5 ]

2 голосов
/ 26 февраля 2010

Я здесь в темноте, так как пока ничего не пробовал:

Есть эта запись в блоге от XBinder, которая утверждает, что они выпускают совместимую с Android версию "через несколько недель". Хотя сейчас это может и не быть вариантом, они также объясняют, как они это сделали, оборачивая легкую StAX-подобную оболочку для поддержки XmlPull, уже присутствующей в Android.

(в моем ответе изначально был еще один параграф о XStream, работающем на Android, но затем я снова прочитал вопрос и увидел, что ваша проблема была в том, чтобы заставить XStream работать на стороне AppEngine ...)

2 голосов
/ 03 декабря 2010

Платформа связывания XML-данных, которая работает как на Google App Engine, так и на Android: Простая . Он использует аннотации, подобные JAXB, для аннотирования POJO, который затем можно сериализовать и десериализовать в XML. Например, аннотированный объект будет выглядеть следующим образом.

@Root
public class Pojo {
   @Attribute
   private String name;
   @Element
   private String value

   public String getName() {
      return name;
   }

   public String getValue() {
      return value;
   }
}

Затем для генерации XML все, что вам нужно сделать, это.

Serializer serializer = new Persister();
serializer.write(instance, outputSteam)

Чтобы прочитать вы можете сделать

Serializer serializer = new Persister();
Pojo pojo = serializer.read(Pojo.class, inputSteam)

И это все! Это довольно мощный фреймворк со множеством других функций и аннотаций. Он работает для Android, Google App Engine и любого JDK 1.5+. Он не имеет зависимостей и очень легкий вес. Для получения дополнительной информации см. Учебник .

1 голос
/ 23 мая 2011

Другой вариант - Пуллоид (pulloid.org). Он опирается на API XmlPull, который включен в Android. На стороне App Engine вам нужно будет использовать реализацию XmlPull, такую ​​как XPP3, на данный момент - я не знаю, является ли это ограничителем показа или нет.

0 голосов
/ 22 января 2011

Вы можете использовать Castor. Только убедитесь, что в Android 2.1 не используется стандартный Android SAXParser. Вы получите ошибки пространства имен. Вы делаете это, определяя синтаксический анализатор, например, как Xerces (и добавляете требуемые JARS) в core.properties. В андроиде 2.2 это может быть нормально. Обратите внимание, что если вы создадите xmlcontext для unmarsheler с xerces, он все равно не будет работать, так как само отображение будет проанализировано с помощью SAX для Android. Это должно быть сделано в ядре (файл свойств верхнего уровня), чтобы даже отображение анализировалось с помощью xerces. наконец - производительность идет так медленно, как вы можете ожидать ... :( Удачи SM

0 голосов
/ 14 февраля 2010

Android не имеет встроенной поддержки генерации XML, точка. Android сильнее с JSON, так как он может анализировать и генерировать документы JSON.

Что касается исправления XMLBeans, вы можете быстрее найти какой-нибудь другой пакет, который имеет меньше зависимостей. Вы не можете легко импортировать любой новый код, который находится в пакетах java.* или javax.*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...