2011-09-06 80 views
2

我似乎无法弄清楚如何创建非硬编码的节点。例如:Grails:使用变量创建XML节点

def aval = "someValue" 
def xml = new MarkupBuilder() 

xml.outTag(attr: aval) // outTag is hardcoded 

我的问题是:如果我不知道该节点的名称(如在我的例子,如果我想要什么outTag是一个变量)。当我读取一个目录/文件并从中创建一个XML时,我正在使用它。谢谢。

回答

7

使用此格式:

import groovy.xml.MarkupBuilder 

def dynamicTag = "blah" 
def aval = "someValue" 
def xml = new MarkupBuilder() 

xml."$dynamicTag"(attr: aval) 

这个工作对我(的Groovy 1.8)

+0

感谢。这工作。出于某种奇怪的原因,我找不到这是任何教程。我很感激帮助。 – ibaralf

+0

太棒了!由于此工作,请将此回复标记为“已接受”! – OverZealous

+0

它工作的原因是您可以使用动态表示法对象调用任何方法。“$ methodName”其中,methodName是一个字符串变量,其中的方法名称为value – Uberto