如何在Groovy MarkupBuilder中动态注入子节点?

时间:2014-12-13 03:45:42

标签: groovy groovydsl

我尝试使用Groovy MarkupBuilder动态创建我的自定义XML结构,如下所示。

<envelope>
  <header>
    <key1>value1</key1>
  </header>
  <body>
    <payload />
  </body>
</envelope>

虽然我使用下面的代码,但我想注入&#39;有效负载&#39;部分代码动态地在一个单独的类中,其中的构建器&#39;作为方法参数传入。

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

builder.envelope{
    header{
        key1("value1")
    }
    body{
        payload(){    
        }
    }
}

println writer.toString()

1 个答案:

答案 0 :(得分:2)

这就是你要找的东西吗?

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

builder.envelope {
    header{
        key1("value1")
    }
    body {
       method(builder) 
    }
}

println writer.toString()

def method(b) {
    b.payload2()
}