使用"envelop"创建groovy xml - 在xml结构的中间添加节点

Mar*_*rty 2 xml groovy builder markupbuilder

(对不起奇怪的标题......)

我想使用groovy构建器系统来创建一个xml.

我的问题是,我希望有一些信封,用户不必关心.

一个例子:

def builder = new groovy.xml.MarkupBuilder()
builder.foo() {
     bar('hello')
}
Run Code Online (Sandbox Code Playgroud)

这应该创造让我们说

<Something id:'123'>
    <AnyInfo>
        <foo>
            <bar>hello</bar>
        </foo>
    </AnyInfo>
</Something>
Run Code Online (Sandbox Code Playgroud)

这样在后台有一个xml结构,用户可以在预定义的节点上添加他的xml结构(例如'AnyInfo')

构建器的外观如何,我可以在信封中间的某处添加带有markupbuilder(或任何其他构建器)的节点?

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

谢谢马蒂

Chr*_*ail 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()
Run Code Online (Sandbox Code Playgroud)

由此创建的结果是您要查找的示例XML.