viernes, 6 de septiembre de 2013

JAXB. Obtener una lista de objetos a partir de un XML

Ya vimos en el post anterior (aquí) como se obtiene un XML de una lista de objetos, ahora vamos a realizar el paso inverso, vamos a obtener una lista de objetos a partir de un fichero XML. Pare ello usaremos el fichero salidaDirecciones.xml que creamos en el ejemplo anterior.
Para ello tenemos que volver a emplear la clase DireccionResponse ya que obtendremos un objeto de esta clase y tendremos entonces que acceder a la lista que contiene para poder crearnos los objetos que deseamos. 
El código que necesitamos es el siguiente:
try {
 File file = new File("salidaDirecciones.xml");
 JAXBContext jaxbContext = JAXBContext.newInstance(DireccionResponse.class);
   
 Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
 DireccionResponse direccionesUnMarshal = (DireccionResponse) jaxbUnmarshaller.unmarshal(file);
           
 Iterator it = direccionesUnMarshal.getList().iterator();
           
 while(it.hasNext()){
   Direccion direccion = (Direccion) it.next();
   System.out.println("Direccion: " + direccion.getCalle());
 }
}
 catch (JAXBException e) {
  e.printStackTrace();
}
Como podemos observar al unmarshal le pasamos el archivo y tenemos que indicarle que objeto vamos a inicializar. Una vez que hemos realizado esta tarea ya solamente nos queda recorrer la lista mediante un iterator y mostrar en la consola las direcciones que nos hemos creado. Veremos entonces algo como esto:


No hay comentarios :

Publicar un comentario