Leer un XML con Groovy

10/Ene/2013 Groovy , , , , , Deja un comentario

Si el otro día veíamos como podíamos crear un XML utilizando Groovy, hoy vamos a ver cómo podemos leer un XML mediante Groovy. Para ello vamos a partir del mismo documento XML que generábamos. Es un XML de libros y autores muy sencillo.

  1. <libros>
  2. <libro autor='Cervantes'>El Quijote</libro>
  3. <libro autor='Homero'>La Iliada</libro>
  4. <libro autor='Camilo Jose Cela'>Viaje a la Alcarria</libro>
  5. <libro autor='Camilo Jose Cela'>La Colmena</libro>
  6. <libro autor='Valerio Massimo Manfredi'>Talos de Esparta</libro>
  7. <libro autor='Valerio Massimo Manfredi'>La Última Legión</libro>
  8. </libros>

Para leer el fichero XML vamos a utilizar la clase XmlSlurper. Será la clase XmlSlurper la que nos permita analizar el fichero. Para ello lo primero será instanciar el fichero XML mediante una clase File.

  1.  
  2. new File('libros.xml')

Este objeto de tipo File se lo pasaremos al método .parse() del XmlSlurper. El método .parse() es el que se encarga de interpretar el XML.

  1. def libros = new XmlSlurper().parse(new File('libros.xml'))

Lo bueno de la clase XmlSlurper y su método .parse() es que el resultado lo deja en una estructura estilo XPath muy sencilla de recorrer. Esta estructura es un GPathResult.

Es por ello que el resultado lo podemos recorrer mediante un bucle for each de la siguiente forma:

  1. for (libro in libros.libro) {...}

La variable libros.libro contendrá nodos de tipo libro. Por ello, si volcamos libro a pantalla, nos mostrará el contenido del nodo, es decir, el título de libro.

  1. for (libro in libros.libro) {
  2. println "El título es $libro"
  3. }

Si queremos volcar un atributo del nodo. Por ejemplo, el autor, tendremos que utilizar una notación de puntos y una arroba para indicar el atributo. Será algo así:

  1. for (libro in libros.libro) {
  2. println "El autor es ${libro.@autor}"
  3. }

De esta forma, el código final que tendremos para leer un XML con Groovy será:

  1. def libros = new XmlSlurper().parse(new File('libros.xml'))
  2. for (libro in libros.libro) {
  3. println "El libro titulado $libro fue escrito por ${libro.@autor}"
  4. }
  5.  
  6.  

Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*