gpathresult groovy xml-parsing

groovy - gpathresult



Usar una cadena como código con Groovy XML Parser (1)

Esto es muy similar a esta pregunta de hace 3 días y esta pregunta

Básicamente necesitas dividir tu camino . y luego recorra esta lista moviéndose a través de su gráfico de objetos

def val = path.split( //./ ).inject( root ) { obj, node -> obj?."$node" }?.text() println "$path/t$val"

Debería hacerlo en esta instancia :-)

Soy nuevo en groovy. Espero que esto sea algo simple de resolver. Estoy leyendo en un documento xml y luego puedo acceder a datos como este:

def root = new XmlParser().parseText(xmlString) println root.foo.bar.text()

Lo que me gustaría hacer es cargar la parte "foo.bar" de la ruta desde un archivo o base de datos, para poder hacer algo como esto:

def paths = ["foo.bar","tashiStation.powerConverter"] // defined for this example paths.each { path -> println path + "/t" + root.path.text() }

Obviamente, el código tal como está escrito no funciona ... Pensé que tal vez esto funcionaría:

paths.each { path -> println path + "/t" + root."${path}".text() }

... pero no es así. Basé mi solución inicial en la página 153 de Groovy para DSL donde se pueden crear métodos dinámicos de forma similar.

¿Pensamientos? La solución ideal no agregará cantidades significativas de código y no agregará ninguna dependencia de biblioteca adicional. Siempre puedo volver a hacer estas cosas en Java con JDOM, pero estaba esperando una solución elegante y genial.