2009-08-29 16 views
21

Estoy haciendo uso de una API en Internet que está organizando objetos para archivos XML. Dado que los archivos XSD también están disponibles, me gustaría poder deshacerlos nuevamente en objetos Java una vez que haya descargado los archivos.Desasignación de archivos XML en objetos Java en Android?

Después de mirar alrededor parece que JAXB es la biblioteca predeterminada para hacer esto en Java, pero como estoy desarrollando una aplicación móvil, la dependencia adicional de 8.6MB simplemente no es aceptable. También encontré XStream, pero aún pesa 7.9MB.

Examinando el SDK de Android parece que el único analizador de XML real disponible es SAX.

Así que aquí está la cuestión:

  1. ¿Hay una manera de conseguir SAX para hacer lo que quiero?
  2. ¿Hay alguna otra herramienta en el SDK de Android que me haya perdido?
  3. ¿Hay otra biblioteca (que sea significativamente más pequeña) que haga esto?

Gracias.

Respuesta

2

Hay muchas herramientas para traducir objetos entre Java y XML, pero ninguna de las que conozco son más pequeñas que las que encontraste. Sin embargo, dependiendo de la complejidad de su gráfico de objetos, SAX puede ser todo lo que necesita y tiene muy poca carga. El truco es construir el gráfico de objetos usted mismo dentro de los manejadores de eventos SAX. Utilicé esta técnica en un par de proyectos antes de que los marshalers XML estuvieran ampliamente disponibles, y aunque requiere un poco más de trabajo, es efectivo.

+0

Sí ... la razón principal por la que comencé a buscar alternativas es que el "gráfico de objetos" en realidad es bastante complejo. Seguiré buscando ... gracias. –

0

En Android SDK, además de SAX, el analizador DOM y XMLPullParser también están disponibles.

Si no desea construir completamente la estructura de datos en memoria, DOM puede aliviar su dolor, siempre que la velocidad y la huella de memoria sean el precio que esté dispuesto a pagar.

19

Hay un marco que funcionará en Android que hace el enlace de Java a XML usando anotaciones de manera similar a JAXB, se llama Simple y pesa menos de 270K, eso es una pequeña fracción de lo que se requiere para XStream o JAXB. Además, no tiene dependencias externas, solo un JAR y todo debería funcionar. A continuación se muestra un enlace al marco de serialización Simple y XML para Java.

http://simple.sourceforge.net

Esto también puede manejar ciclos en gráficos de objetos.

+4

Esta biblioteca parece agradable, la probaré con mis aplicaciones de Android, sin embargo, ¿hay una herramienta para crear clases de Java desde XSD a este formato? – yeradis

+1

Quizás que desee agregar esto a este comentario: http://www.javacodegeeks.com/2011/02/android-xml-binding-simple-tutorial.html –

+5

Y acabo de escribir una publicación exhaustiva de blog sobre la inclusión de simple en una Proyecto de Android aquí: http://robertmassaioli.wordpress.com/2011/04/21/simple-xml-in-android-1-5-and-up/ –

5

XStream es 431k. No necesita el zip completo de distribución en su aplicación de Android. Si agrega el analizador de extracción xpp3 para un rendimiento más rápido, agregaría 24k. Eso llevaría todo tu paquete a 455k. Todavía no es ideal, pero podría vivir con eso.

1

kxml2-2.2.2 es una buena lib pequeña (43K) que funciona en JavaME, realiza un análisis sintáctico y lo he usado con éxito. La única dependencia que tiene es xmlpull, que es 8k. ¿Cómo es eso para pequeño?

La advertencia es que no hace ninguna magia vinculante.

0

Tenemos un producto llamado XBinder que genera clases y codifica/descodifica código de XSD. La versión 2.1 ocupa alrededor de 187K. Versión 2.2 (que saldrá en octubre de 2010) tarda aproximadamente 101 K (y es algo más fácil de usar con Android que v2.1). Verifique here.

Cuestiones relacionadas