My Blog ha sido movido a SliceTech WordPress!

En 6 segundos estara entrando a mi nuevo Blog. Si no, visite
http://slicetech.x10.bz
actualice su Marcalibros.

martes, 4 de marzo de 2008

Manejo de XML con Groovy

Si se esta escribiendo, leyendo, o trabajando con archivos de XML, en Java esto representa un considerable esfuerzo y cantidad de trabajo, alternativas como el W3C DOM hacen la vida mas fácil, sin embargo, Java no te ayuda mucho en términos de lenguaje, este no es capaz de adaptarse a nuestras necesidades.
Groovy nos permite a las clases actuar como si ella tuvieran propiedades en tiempo de ejecución, en igual medida, si estas propiedades no son conocidas cuando la clase es compilada. GPath fue construida con esta característica lo que le permite navegar por el documento XML, como si fuera XPath, es decir, GPath simula en lenguaje Java lo que seria XPhat de XML.
Para refinarlo y entenderlo mas, supongamos que tenemos el siguiente archivo .xml denominado customers.xml
<?xml version="1.0" ?>
<customers>
<corporate>
<customer name="Bill Gates" company="Microsoft" />
<customer name="Steve Jobs" company="Apple" />
<customer name="Jonathan Schwartz" company="Sun" />
</corporate>
<consumer>
<customer name="John Doe" />
<customer name="Jane Doe" />
</consumer>
</customers>

Podremos imprimir los nombres de usuario corporativos <customer name> con sus nombres y sus compañías a las que pertenecen usando el siguiente código en Groovy:

class prueba {

static void main(args) {
def customers = new XmlSlurper().parse(new File('customers.xml'))
for (customer in customers.corporate.customer){
println "${customer.@name} works for ${customer.@company}"
}
}
}

Características como esta son las que le dan poder a Groovy, pero que es GPath, es un bloque de código usado para la navegación de objetos, su nombre fue tomado por similitud de la tecnología XPath de XML. Como Xpath esta dirigido a construir mediante expresiones cortas y compactas haciéndolo mas fácil de leer. En nuestro codigo el color Verde representa el GPath.



Powered by ScribeFire.

No hay comentarios: