Utilizar JAXB (xjc) clases generadas en android
Estoy usando Rest-Webservice
en Android
. El Web Service
podría manejar JSON
y XML
, la API se describe como una XSD
. Así que utilicé JAXB
para generar clases de la XSD
y luego utilicé el procesador JSON
jackson para generar JSON
desde mis instancias.
El problema es que JAXB
( xjc
) genera clases con anotaciones JAXB
y Android
no puede manejarlas. Intenté agregar el jaxb-api.jar
a mi proyecto del androide pero el Dalvik no utilizará clases de la base.
- Altura mitad fill_parent xml
- Cambiar el ancho de AutoCompleteTextView en Android
- @Namespace en Android SimpleXml
- Cómo obtener una imagen semi transparente en la parte superior de otra imagen para mantener el texto en android (captura de pantalla proporcionada)
- El valor SharedPreferences no se actualiza
Para mi primera implementación eliminé manualmente las anotaciones. Pero ahora el XSD
fue actualizado y no quiero hacerlo cada vez que esto sucede.
¿Tiene alguna idea de cómo manejar este problema de una manera mejor? ¿Existe la posibilidad de usar jaxb/xjc
sin anotaciones o hay otro generador de código que pueda hacer esto? ¿Conoces una manera fácil de eliminar anotaciones de clases java (incluso si se imprimen en varias líneas)? ¿Existe una configuración de proyecto para los proyectos Android
Eclipse
, que hace que el dalvik permita las libs centrales?
Thx, cathixx
- Android Studio - Autocompletar de XML Editor no funciona con bibliotecas de soporte
- Trunca automáticamente texto TextView para no superponer otro TextView
- XML Spinner atributos textAlignment = "derecho" API 16
- Cómo comprobar qué recurso de imagen actual se adjunta a ImageView en android xml?
- Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
- Android: Cómo obtener XML personalizado reconocido
- Resaltar los elementos seleccionados en ListFragment (MultiChoiceModeListener)?
- Cómo poner tres botones de imagen en la misma línea en Android
Tuve que hacer algunas investigaciones adicionales para que la respuesta de Cathixx funcionara ya que soy nueva en Ant, así que compartiré esto para ayudar a otros.
Estas instrucciones tomarán archivos Java con código como:
import javax.xml.bind.annotation.XmlElement; @XmlRootElement public class Response {...
… y comentar estas ocurrencias, por lo que parece:
/*import javax.xml.bind.annotation.XmlElement;*/ /*@XmlRootElement*/ public class Response {...
Primero, cree un archivo build.xml
(o lo que quiera llamarlo – debe ser .xml) en un nuevo proyecto Eclipse (un proyecto "General" está bien).
A continuación, agregue el siguiente texto al archivo build.xml
:
<?xml version="1.0"?> <project name="CommentOutXmlAnnotations" basedir="." default="commentOutXmlAnnotations" > <!-- This Ant script comments out the following lines from the Java files in this directory: import javax.xml.bind.annotation.*; @Xml* --> <target name="commentOutXmlAnnotations" description="Run" > <replaceregexp byline="false" flags="g" > <regexp pattern="(@Xml[A-Za-z0-9]+(\([^)]+\))?|import javax\.xml\.bind\.annotation\.[A-Za-z0-9.]+;)[ \t]*(\r?\n)" /> <substitution expression="/*\1*/\3" /> <fileset dir="." > <include name="*.java" /> </fileset> </replaceregexp> </target> </project>
Coloque los archivos *.java
que desea comentar las importaciones y anotaciones de XML en el mismo directorio que el archivo build.xml.
Haga clic con el botón derecho en el archivo build.xml de Eclipse y haga clic en "Ejecutar como-> Ant Build".
Debería ver la salida como:
Buildfile: D:\Eclipse_Projects\StripAnnotations\build.xml commentOutXmlAnnotations: BUILD SUCCESSFUL Total time: 403 milliseconds
… y las importaciones XML y las anotaciones deben ser comentadas de tus archivos.
¡Hecho!
Nota: si desea incluir todos los archivos *.java
en todos los subdirectorios del archivo build.xml (por ejemplo, para comentar todas las anotaciones / importaciones XML generadas para un montón de clases JAXB en varios paquetes), cambie la etiqueta del conjunto de fileset
a :
<fileset dir="." > <include name="**/*.java" /> </fileset>
Ahora, lo resolví yo mismo comentando todas las anotaciones con el siguiente script de ant
:
<replaceregexp flags="g" byline="false"> <regexp pattern="(@Xml[A-Za-z0-9]+(\([^)]+\))?|import javax\.xml\.bind\.annotation\.[A-Za-z0-9.]+;)[ \t]*(\r?\n)"/> <substitution expression="/*\1*/\3"/> <fileset dir="path/to/files"> <include name="*.java"/> </fileset> </replaceregexp>
- / Dev / HAX falta cada vez que reinicio mi equipo
- Mejores prácticas para desarrollar aplicaciones más grandes en Android