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

How to add nodes under to different parents in Groovy Markup Builder by calling a method or closure

我想生产以下xml。 我不想通过重复相同的方法在 xpm 和 MyRoot 中添加 xsv 块 code.Instead 我想调用一个方法或闭包,这样它将 return 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