En este ejemplo vamos a utilizar el lenguaje Groovy para crear un documento XML. Para ello vamos a utilizar la clase MarkupBuilder que será la que nos ayude a construir de una forma sencilla con Groovy.
El XML que pretendemos generar es un XML que nos permita almacenar libros y autores. Que en este cao lo hemos definido de la siguiente forma:
El Quijote
La Iliada
Viaje a la Alcarria
La Colmena
Talos de Esparta
La Última Legión
Vemos que los autores van como atributo del elemento libro y que el contenido de dicho libro es el titulo del libro. Todos los libros están bajo una estructura libro. Algo sencillo.
Si empezamos con nuestro código Groovy lo primero será definir una cadena, en la cual dejaremos el resultado de nuestro XML. Para ello vamos a utilizar la clase StringWriter.
def sw = new StringWriter()
Esta cadena se la pasaremos a la instanciación del MarkupBuilder.
def xml = new groovy.xml.MarkupBuilder(sw)
Lo bueno del dinamismo de Groovy es que permite crear métodos que no existen. Así cada uno de los nodos del XML estará expresado mediante un método con el nombre del nodo. Por ejemplo, para representar el nombre del nodo libros haremos lo siguiente
xml.libros(){}
Ya solo eso nos creará la estructura del nodo raíz. Ahora vamos a definir cada uno de los elementos libro. Estos los ponemos dentro de las llaves del elemento libro. Será de la siguiente forma:
xml.libros{
libro("El Quijote")
libro("La Iliada")
libro("Viaje a la Alcarria")
}
Vemos que el texto que le pasamos a la estructura libro es el título del libro en cuestión.
Si ahora queremos añadir los atributos, estos, los vamos a poner dentro de la llamada al método libro, con una diferencia y es que seguirán la estructura
atributo:"valor del atributo"
Así, meteremos los autores como atributos de los elementos con el siguiente código:
xml.libros{
libro(autor:"Cervantes","El Quijote")
libro(autor:"Homero","La Iliada")
libro(autor:"Camilo Jose Cela","Viaje a la Alcarria")
}
El código final para crear un XML con Groovy quedará de la siguiente forma:
def sw = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(sw)
xml.libros{
libro(autor:"Cervantes","El Quijote")
libro(autor:"Homero","La Iliada")
libro(autor:"Camilo Jose Cela","Viaje a la Alcarria")
}
println sw