Groovy MarkupBuilder节点

dro*_*del 3 xml groovy

请考虑以下代码:

def builder = new MarkupBuilder()
builder.root() {
}
Run Code Online (Sandbox Code Playgroud)

我想将root的子代的创建委托给一个单独的方法.我怎样才能完成这项任务?要考虑的一些选项是从方法创建和返回节点,或者传入父节点并在方法中添加它们(两个示例都很有用).

小智 7

Groovy的网站包含有关如何做到这一点的解释.

样品:

def writer = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(writer)
xml.books() {
   createBookNode(xml, 2, 'mrhaki')
}

def createBookNode(builder, repeat, username) {
    repeat.times {
       builder.person(name: username)
    }
}

println writer.toString()
Run Code Online (Sandbox Code Playgroud)

输出将是:

<books>
    <person name="mrhaki"/>
    <person name="mrhaki"/>
</books>
Run Code Online (Sandbox Code Playgroud)