如何通过调用方法或闭包在Groovy Markup Builder中将节点添加到不同的父节点下

时间:2015-03-01 04:04:55

标签: xml groovy builder markupbuilder

我想生成xml以下。 我不想通过重复相同的代码在xpm和MyRoot中添加xsv块。相反,我想调用一个方法或闭包,以便它将返回xsv块,可以在相应的父节点中添加(MyRoot和xpm)

<MyRoot>
   <xsv>
      <action>create</action>
      <actionID>4</actionID>
   </xsv>
   <xpm>
      <xsv>
         <action>create</action>
         <actionID>4</actionID>
      </xsv>
   </xpm>
</MyRoot>

1 个答案:

答案 0 :(得分:3)

尝试以下代码:

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)
def out = builder.MyRoot { 
   addXsv(builder, 'create', 4)
      xpm() {
         addXsv(builder, 'drop', 5)
      }
   }

def addXsv(builder, name, id) {
   builder.xsv() {
      action name
      actionID id
   }
}

println writer