使用“信封”创建groovy xml - 在xml结构的中间添加节点

时间:2009-12-07 10:24:13

标签: xml groovy builder markupbuilder

(抱歉这个奇怪的标题......)

我想使用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(或任何其他构建器)的节点吗?

我希望这在某种程度上是可以理解的?!

感谢 玛蒂

1 个答案:

答案 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。