Saltar la navegación

6.7.4.- Ejemplo: Marshall, Unmarshall.

Una vez que tenemos el proyecto con las clases del apartado Ejemplo anotaciones, vamos a añadir el siguiente programa

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class JavaJAXB {
    private static final String LIBRERIA_XML = "./libreria-jaxb.xml";
    public static void main(String[] args) throws JAXBException, IOException {
        // Lista de LIbros
        ArrayList<Libro> libroLista = new ArrayList<Libro>();
        // Creamos varios libros
        Libro libro1 = new Libro();
        libro1.setIsbn("978-0060554736");
        libro1.setNombre("The Game");
        libro1.setAutor("Neil Strauss");
        libro1.setEditorial("Harpercollins");
        libroLista.add(libro1);
        Libro libro2 = new Libro();
        libro2.setIsbn("978-3832180577");
        libro2.setNombre("Feuchtgebiete");
        libro2.setAutor("Charlotte Roche");
        libro2.setEditorial("Dumont Buchverlag");
        libroLista.add(libro2);
        // Se crea La libreria y se le asigna la lista de libros
        Libreria libreria = new Libreria();
        libreria.setNombre("LIbreria sin limite");
        libreria.setLugar("Barrio Obrero");
        libreria.setListaLibro(libroLista);
        // Creamos un contexto de la clase JAXB y lo intanciamos
       JAXBContext context = JAXBContext.newInstance(Libreria.class);
       Marshaller m = context.createMarshaller();
       m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
       // Lo creamos con system out
       m.marshal(libreria, System.out);
       // Escribimos en el archivo
       m.marshal(libreria, new File(LIBRERIA_XML));
       // Obtenemos las variables obtenidas del XML creado anteriormente
       System.out.println();
       System.out.println("Salida del XML: ");
       Unmarshaller um = context.createUnmarshaller();
       Libreria libreria2 = (Libreria) um.unmarshal(new FileReader(LIBRERIA_XML));
       ArrayList<Libro> lista = libreria2.getListaLibro();
       for (Libro libro : lista) {
       System.out.println("Libro: " + libro.getNombre() + " de " + libro.getAutor());
   }
}
}

Puedes encontrar mas ejemplos en la página:

https://www.javacodegeeks.com/2014/12/jaxb-tutorial-xml-binding.html#marshal