2

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

我想使用 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”)

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

我希望这是可以理解的?!

谢谢马蒂

4

1 回答 1

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。

于 2009-12-07T12:55:37.533 回答