1-noviembre-2014
admin

Java Architecture for XML Binding (JAXB)

JAXB te permite almacenar y recuperar datos en memoria en cualquier formato XML, sin la necesidad de implementar un conjunto específico de rutinas de carga y guardado de XML para la estructura de clases del programa.

Vamos a utilizar las interfaces Marshaller y Unmarshaller, responsables de dirigir el proceso de serialización de los contenidos de un objeto de alguna clase de Java a datos XML y viceversa.

Marshalling
La interface Marshaller es la interfaz que define los métodos utilizados para realizar el binding de nuestras clases desde objetos a XML. De esta forma:
1 – Definimos una clase Persona.

@XmlRootElement(name = "Persona")
public class Persona{

    @XmlElement()
    private String nombre;
    @XmlElement()
    private String apellido;
 
    public Persona()
    {
    }
 
    public Persona(String nombre, String apellido)
    {
        this.nombre= nombre;
        this.apellido= apellido;
    }
    …
}

2 – creamos el objeto que pretendemos convertir a xml:

Persona person = new Persona("Manuel", "Perez");

3 – Una vez creado el objeto Marshaller solo resta invocarlo pasándole el objeto a serializar y el flujo donde almacenará el resultado:

JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     
FileWriter file = new FileWriter("/temp/Persona.xml");
marshaller.marshal(person, file);

4 –El fichero creado tendrá esta estructura:

< ?xml version="1.0" encoding="UTF-8" standalone="yes"?>
< Persona>
    < nombre>Manuel< /nombre>
    < apellido>Perez< /apellido>
< /Persona>

Unmarshalling
La interface Unarshaller es la interfaz que define los métodos utilizados para realizar el binding de nuestras clases desde XML a objetos. Pasamos directamente al ejemplo:

JAXBContext jc = JAXBContext.newInstance (Persona.class);
Unmarshaller u = jc.createUnmarshaller ();
File f = new File ("/temp/DB.xml");
Persona personadelxml= (Persona)u.unmarshal(f);

Fuente: http://es.wikipedia.org/wiki/JAXB
Documentación

Comentarios cerrados.

Categorias

Linkedin