如何在Groovy标记生成器中通过调用方法或闭包将下的节点添加到不同的父节点



我想生成以下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>

尝试以下代码:

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

最新更新