(抱歉这个奇怪的标题......)
我想使用groovy构建器系统来创建一个xml。
我的问题是我希望有一些信封,用户不必关心。
一个例子:
def builder = new groovy.xml.MarkupBuilder()
builder.foo() {
bar('hello')
}
这应该创建让我们说
<Something id:'123'>
<AnyInfo>
<foo>
<bar>hello</bar>
</foo>
</AnyInfo>
</Something>
这样在后台有一个xml结构,用户可以在预定义的节点上添加他的xml结构(在'AnyInfo'示例中)
构建器的外观如何,我可以在信封中间的某处添加带有markupbuilder(或任何其他构建器)的节点吗?
我希望这在某种程度上是可以理解的?!
感谢 玛蒂
答案 0 :(得分:6)
您可以使用闭包轻松完成此操作。创建一个闭包来创建包装器。然后,您可以动态提交创建实际内容的闭包。例如:
def writer = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(writer)
def createWrapper = {Closure c->
builder.Something(id:123) {
AnyInfo() {
c()
}
}
}
createWrapper {
builder.foo() {
bar('hello')
}
}
println writer.toString()
由此创建的结果是您要查找的示例XML。