我正在使用 Groovy MarkupBuilder将 Map 转换为 XML 。此 Map 可以包含简单的键/值对、其他 Map 或 Map 列表。我从这里的代码捎带。
import groovy.xml.MarkupBuilder
def map = [
key1:'value1',
key2:'value2',
nestedMap : [
key1:'bar1',
key2:'bar2'
],
select : [
[option:'foo1'],
[option:'foo2']
]
]
Closure renderMap( Map map ){
return {
for ( entry in map ){
switch( entry.value.getClass() ){
case Map :
"${entry.key}" renderMap( entry.value )
break
case List:
entry.value.collect { listEntry ->
"${entry.key}" renderMap( listEntry )
}
break
default :
"${entry.key}"( "${entry.value}" )
break
}
}
}
}
StringWriter writer = new StringWriter()
new MarkupBuilder(writer).root renderMap(map)
println writer.toString()
我关心的这部分打印出来:
<select>
<option>foo1</option>
</select>
<select>
<option>foo2</option>
</select>
但是,我想知道是否有办法让 select 封装这两个选项,如下所示:
<select>
<option>foo1</option>
<option>foo2</option>
</select>
我试过玩弄钥匙的位置,但无济于事。我是不是全都错了,还是我不应该使用构建器?