0% encontró este documento útil (0 votos)
61 vistas7 páginas

XStream y JAXB

XStream es una librería de Java que permite serializar objetos a XML y viceversa, utilizando archivos .dat para leer datos y generar archivos XML. También se menciona JAXB, que es una tecnología para mapear clases Java a XML, utilizando JavaBeans y anotaciones para facilitar la conversión. Ambas tecnologías permiten la conversión entre objetos Java y representaciones XML mediante procesos de serialización y deserialización.

Cargado por

monfortegg
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
61 vistas7 páginas

XStream y JAXB

XStream es una librería de Java que permite serializar objetos a XML y viceversa, utilizando archivos .dat para leer datos y generar archivos XML. También se menciona JAXB, que es una tecnología para mapear clases Java a XML, utilizando JavaBeans y anotaciones para facilitar la conversión. Ambas tecnologías permiten la conversión entre objetos Java y representaciones XML mediante procesos de serialización y deserialización.

Cargado por

monfortegg
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

XSTREAM

XStream es una librería de Java, que sirve para serializar objetos Java a XML y viceversa.
Para poder usarla, debemos descargar la librería de su web e importar [Link] y
[Link] en nuestro proyecto.

ESCRIBIR XML A PARTIR DE UN .DAT :

// .dat no de objetos
File fichero = new File("src/[Link]");
FileInputStream filein = new FileInputStream(fichero);
DataInputStream dataIS = new DataInputStream(filein);

// .dat de objetos
// File fichero = new File ("src/[Link]") ;
// FileInputStream filein = new FileInputStream(fichero) ;
// ObjectInputStream objectIS = new ObjectInputStream(filein);

ListaDepartamentos lista = new ListaDepartamentos();

int numero;
String nombre, localidad;

// Leemos los ATRIBUTOS del archivo y creamos los objetos


departamento y los añadimos a la lista

try {
while (true) {
numero = [Link]();
nombre = [Link]();
localidad = [Link]();

Departamento departamento = new Departamento(numero,


nombre, localidad);
lista.añadirDepartamento(departamento);

}
} catch (EOFException e) {}
[Link]();

// Leemos los OBJETOS del archivo y los añadimos a la lista


// try {
// while (true) {
// Departamento departamento = (Departamento)
[Link]();
// lista.añadirDepartamento(departamento);
// }
// } catch (EOFException e) {}
// [Link]();

try {
XStream xstream = new XStream(new StaxDriver());
[Link]([Link]);

[Link]("Departamentos", [Link]);
// .alias (nombre etiqueta, [Link]) por cada clase, le
asignamos un nombre a la etiqueta
[Link]("Departamento", [Link]);
[Link]("NombreDepartamento", [Link],
"nombre");
// .aliasField (nuevo nombre, [Link], atributo) para
cambiar la etiqueta de los atributos de una clase
[Link]("NumeroDepartamento", [Link],
"numero");
[Link]([Link],
"departamentos");
// .addImplicitCollection(clase [Link], nombre del
arraylist) para las listas, que no salga la etiqueta
[Link](lista, new
FileOutputStream("[Link]"));
// .toXML (arraylist, new FOS([Link]))
} catch (Exception e) {
[Link]();
}
PASAR UN XML A OBJETO Y LEERLO:

XStream xstream = new XStream(new StaxDriver());


[Link]([Link]);

[Link]("Departamentos", [Link]);
[Link]("Departamento", [Link]);
[Link]("NombreDepartamento", [Link], "nombre");
[Link]("NumeroDepartamento", [Link], "numero");
[Link]([Link],
"departamentos");

try {
FileInputStream fileInputStream = new
FileInputStream("[Link]");
ListaDepartamentos listaDepartamentos = (ListaDepartamentos)
[Link](fileInputStream);

ArrayList<Departamento> listaDep =
[Link]();

for (Departamento d : listaDep) {


[Link]([Link]());
}
} catch (FileNotFoundException e) {
[Link]("Archivo XML no encontrado");
}

JAXB

Java Architecture for XML Binding (JAXB) es una tecnología que permite mapear
clases Java a representaciones XML y viceversa. Vamos a utilizar JavaBeans, que
serán las clases que se van a se van a mapear. Son clases primitivas Java (POJOs
- Plain Old Java Objects) con las propiedades, getter y setter, el constructor sin
parámetros y el constructor con las propiedades. En estas clases que mapear se
añadirán las Anotaciones, que son las indicaciones que ayudan a convertir el
JavaBean en XML.
Para ello cuenta con dos funciones principales:

- Presentar un objeto Java en XML (Serializar) mediante un proceso llamado


marshall.
- Presentar un XML en un objeto Java (Deserializar) mediante un proceso
llamado unmarshall.

Importaciones para anotaciones:

import [Link];
import [Link];
import [Link];
import [Link];

Principales anotaciones:

Sobre la clase:
@XmIRootElement(namespace = "namespace"): Define la raíz del XML.

@XmlType(propOrder = { "field2", "field1",.. }): Permite definir en qué orden se van


a escribir los elementos (o las etiquetas) dentro del XML.

Sobre su get:
@XmlElement(name = "nombre"): Define el elemento de XML que se va usar.
Si el atributo es una colección (array, list, etc...) debe llevar dos anotaciones,
@XmlElementWrapper y @XmlElement, esta última, con un nombre si se desea.

IMPORTACIONES CÓDIGO PRINCIPAL:

import [Link];
import [Link];
import [Link];

CÓDIGO PRINCIPAL OBJETO A XML:

Instanciamos el contexto, indicando la clase que será el RootElement, en nuestro


ejemplo es la clase Biblioteca:
JAXBContext context = [Link]([Link]);

Creamos un Marshaller, que es la clase capaz de convertir nuestro JavaBean, en


una cadena XML:
Marshaller marshaller = [Link]();

Indicamos que vamos a querer el XML con un formato amigable (saltos de línea,
sangrado, etc)
[Link](Marshaller.JAXB_FORMATTED_OUTPUT,
[Link]);
Hacemos la conversión llamando al método marshal, pasando una instancia del
JavaBean que queramos convertir a XML y un OutputStream
[Link](biblioteca, new File("src/[Link]"));

Ejemplo:

CÓDIGO PRINCIPAL XML A OBJETO:

Instanciamos el contexto, indicando la clase que será el RootElement, en nuestro


ejemplo Biblioteca:

JAXBContext context = [Link] ([Link]);

Se crea Unmarshaller en el coxtexto de la clase Biblioteca:


Unmarshaller unmars = [Link] ();

Utilizamos el método unmarshal, para obtener datos de un Reader (un file):

Biblioteca biblioteca = (Biblioteca) [Link] (new


FileReader ("[Link]"));

ArrayList<Librerias> librerias = [Link]();

for (Libreria l : librerias) {


[Link]([Link]());
}

También podría gustarte