JAXB para principiantes: Tutorial para el procesamiento de XML con Java
Para que las aplicaciones se comuniquen entre sí, a menudo es necesario convertir los datos a un formato que sea altamente compatible. Para este fin, la biblioteca JAXB existe en Java, que procesa objetos en archivos XML.
Generar un archivo XML con JAXB - Mejores prácticas
JAXB significa Arquitectura de Java para Enlace XML . Permite que los objetos Java se conviertan en archivos XML y viceversa. Antes de comenzar, hay algunos puntos a tener en cuenta:
- JAXB ha sido una parte integral de la suite JRE desde la versión 1.6 . Además, el entorno de desarrollo de Java debe estar actualizado porque solucionó errores.
- Evite los tipos de datos primitivos como flotante, entero decimal o negativo, así como los tipos de datos anónimos . No hay equivalente en JAXB para esto. De lo contrario, se pueden convertir objetos, tipos de datos numéricos, listas y conjuntos. JAXB tampoco puede manejar tipos de datos complejos como java.time.LocalDate . Esto requiere un adaptador especialmente creado.
- En la jerga técnica, la dirección de Java a XML se llama cálculo de referencias, mientras que el descifrado representa la dirección opuesta.
anotaciones XML
Últimos videos
JAXB para principiantes: tutorial con el ejemplo de una colección de CD
AudioCD.java: los atributos del CD de audio se definen aquí
MusicDB.java: la colección de música consta de una lista de CD de audio
Nuestro tutorial trata sobre una colección de CD que se emite en XML. Se compone de varios CD de audio. El artista, el año de lanzamiento, el nombre del álbum y las canciones se graban para cada CD de audio.
- Primero se debe crear la clase, que contiene los datos de un CD de audio. Esto incluye el artista, el año de lanzamiento, el álbum y las canciones que están en el CD.
- Para controlar mejor la salida en formato XML, se requieren anotaciones XML que comiencen con @ en Java.
- El elemento raíz en el archivo XML se puede especificar mediante la siguiente anotación: @XmlRootElement (name = "Audiocd")
- Puede insertar una anotación sobre los métodos getter o setter que especifiquen un nombre alternativo para un atributo Java. Por ejemplo, en lugar del año de atributo, el año de publicación debería aparecer: @XmlElement (name = "year of publishing")
- El orden de los atributos está determinado por la anotación @XmlType (propOrder = {"artist", "title", "year", "songlist"}) . Esto significa que el nombre del artista aparece primero en el archivo XML, seguido del nombre del álbum, el año de lanzamiento y la lista con las canciones. De lo contrario, el orden depende del archivo Java.
- A continuación, cree una nueva clase Java llamada MusicDB, que contiene una lista de CD de audio. El nombre de la colección de música y la ubicación de la colección de música también se registran aquí. En principio, el procedimiento es similar al del archivo Java mencionado anteriormente.
De objetos Java a archivos XML
Últimos videos
AudioCDMain.java: aquí se crean varios CD de audio
AudioCDMain.java: crea la colección de música
AudioCDMain.java: Convierte el código a XML
La conversión en sí tiene lugar en un programa de prueba, más precisamente en el método principal.
- Primero, cree varias instancias de CD de audio para que se creen múltiples CD de audio.
- También se requiere una instancia de la colección de música tipo MusicDB.
- Además, JAXB necesita saber qué clase de Java contiene el elemento raíz. En nuestro caso, esta es la clase MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- La conversión se lleva a cabo utilizando la instancia de Marshaller, que está vinculada con el método JAXB mencionado anteriormente: Marshaller m = context.createMarshaller ();
- El método Marshaller proporciona más opciones, como que el documento XML tenga formato de salida: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Todo en la dirección opuesta.
Últimos videos
AudioCDMain.java: JAXB genera objetos Java a partir de un archivo XML
El archivo XML ya ha sido formateado por JAXB
Básicamente, la conversión en la otra dirección procede de manera similar:
- Primero, se crea una instancia del método unmarshaller : unmarshaller at = context.createUnmarshaller ();
- Luego, la instancia de unmarshaler necesita el nombre del archivo XML creado anteriormente: MusicDB mdb2 = (MusicDB) um.unmarshal (nuevo FileReader (MUSICDB_XML));