2010-02-14 13 views
5

REST XML (¡no JSON!) El servicio web debería intercambiar el XML XML especificado entre un Google App Engine y una aplicación de Android.Android y Google App Engine: ¿está disponible la herramienta XML Binding Tool?

Quería utilizar XStream para ambos, sin embargo, no pude conseguir que funcionara para el Google App Engine, por lo tanto para mí Apache XMLBeans es la siguiente mejor opción (JAXB no funciona en ambos). Sin embargo, con Google App Engine no hay problema, pero en Android, recibo varias excepciones severas (por ejemplo, debido al uso de Stax API con sus paquetes javax.xml. *).

Así,

  1. ¿Hay alguna otra posibilidad de unión XML para transmitir documentos XML en GAE y Android?
  2. Si no, ¿es posible parchear Apache XMLBeans para que funcione con Android?

¡Gracias!

Respuesta

0

Android carece del soporte integrado para generación XML, punto. Android es más fuerte con JSON, ya que puede analizar y generar documentos JSON.

En términos de parcheo de XMLBeans, puede encontrar más rápido encontrar algún otro paquete que tenga menos dependencias. No puede importar fácilmente ningún código nuevo que resida en los paquetes java.* o javax.*.

2

estoy metiendo en la oscuridad aquí, ya que no he probado nada de esto, sin embargo:

Hay this blog entry de XBinder que afirma que están lanzando una versión compatible androide- "en unas semanas" . Si bien eso podría no ser una opción en este momento, también explican un poco cómo lo han hecho, envolviendo un envoltorio ligero como StAX en el soporte XmlPull ya presente en Android.

(mi respuesta originalmente tenía otro párrafo en xstream trabajando en android, pero luego leí la pregunta de nuevo y vio que el problema estaba en conseguir xstream para trabajar en el lado AppEngine ...)

+0

finales del texto, esto es exactamente lo que estoy buscando en este momento estoy evaluando http:.. //vtd-xml.sourceforge.net/, que funciona bien, pero hay ligante datos. tan pronto como la versión compatible con Android está fuera, voy a comprobarlo. – Ice09

+0

lo característica está buscando en la carpeta de datos xml? –

2

Una de datos XML El marco vinculante que funciona tanto en Google App Engine como en Android es Simple. Utiliza anotaciones similares a JAXB para anotar un POJO que luego se puede serializar y deserializar en XML. Por ejemplo, un objeto anotado se vería así.

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

    public String getName() { 
     return name; 
    } 

    public String getValue() { 
     return value; 
    } 
} 

Luego, para generar XML, todo lo que tiene que hacer es.

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

Para leer se puede hacer

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

Y eso es todo! Es un marco bastante poderoso con muchas otras características y anotaciones. Funciona para Android, Google App Engine y cualquier JDK 1.5+. No tiene dependencias y es muy ligero. Para obtener más información, consulte el Tutorial.

0

Puede usar Castor. Solo asegúrate, en Android 2.1, de no usar el SAXParser predeterminado de Android. Obtendrás errores de espacio de nombres. Para ello, defina el analizador como, por ejemplo, Xerces (y agregue los JARS necesarios) en core.properties. En Android 2.2, puede estar bien. Tenga en cuenta que si crea un xmlcontext para el unmarsheler con xerces, aún no funcionará, ya que el mapeo mismo se analizará con el SAX de Android.Debe hacerse en el núcleo (archivo de propiedades de nivel superior) para que incluso la asignación sea analizada por xerces. finalmente - el rendimiento es tan lento como se puede esperar ... :(Buena suerte SM

1

Otra opción es Pulloid (pulloid.org). Se basa en la API XmlPull que se incluye en Android. tendría que usar una implementación XmlPull como XPP3 por ahora - no sé si es un tapón de la demostración o no