2010-06-18 31 views
2

有没有从前面的回答修改代码的方式Groovy的MarkupBuilder的标签

import groovy.xml.MarkupBuilder 

def writer = new StringWriter() 
def builder = new MarkupBuilder(writer) 

def awaiting = ['one', 'two', 'three'] 

builder.html { 
    ul { 
     awaiting.each { 
      li(it.toString()) 
     } 
    } 
} 

println writer.toString() 

因此,如果您添加一个标签,而不是说你把它 - 就像

builder.html{ 
tag{ 
    awaiting.each{} 
    } 
} return result 

可能是“醇'或'ul'例如

回答

2

您可以依靠GStrings以及您可以通过其字符串值调用函数的事实。

import groovy.xml.MarkupBuilder 

def writer = new StringWriter() 
def builder = new MarkupBuilder(writer) 

def awaiting = ['one', 'two', 'three'] 
def tag = 'ol' 

builder.html { 
    "$tag" { 
     awaiting.each { 
      li(it.toString()) 
     } 
    } 
} 

println writer.toString() 
+0

星.. 我知道那里会有人离开,但一如往常第一步似乎需要很长时间才能沉入... – 2010-06-18 12:50:16

0

你也可以使用invokeMethod,它比上面更明确,尽管时间稍长一些。

builder.html { 
    invokeMethod(tag) { 
    awaiting.each { 
     li it 
} } } 
相关问题