我是 groovy 的新手——我希望这是一件很容易解决的事情。我正在阅读一个 xml 文档,然后我可以访问这样的数据:
def root = new XmlParser().parseText(xmlString)
println root.foo.bar.text()
我想做的是从文件或数据库中加载路径的“foo.bar”部分,这样我就可以做这样的事情:
def paths = ["foo.bar","tashiStation.powerConverter"] // defined for this example
paths.each {
path ->
println path + "\t" + root.path.text()
}
显然,编写的代码不起作用......我想也许这会起作用:
paths.each {
path ->
println path + "\t" + root."${path}".text()
}
...但事实并非如此。我的初始解决方案基于 Groovy for DSL 的 pg 153,其中可以以类似的方式创建动态方法。
想法?理想的解决方案不会添加大量代码,也不会添加任何额外的库依赖项。我总是可以回退到用 JDOM 在 Java 中做这些事情,但我希望有一个优雅的 groovy 解决方案。