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

标签 xml groovy builder markupbuilder

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

<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

关于xml - 如何通过调用方法或闭包将节点添加到 Groovy Markup Builder 中的不同父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28789963/

相关文章:

python - 在python中创建xml文件时如何插入制表符而不是空格

ruby - 如何在不知道其名称的情况下使用其内容的正则表达式获取 XML 子标签

concurrency - 与withPool并行

java - 不可变对象(immutable对象)生成器

java - 线程 "main"org.hibernate.InvalidMappingException : Unable to read XML 中出现异常

c# - C# .Net 2005 中 VB6 的 XMLHTTP 等价物是什么?

grails - 如何检索最新创建的数据库条目?

post - 在 groovy post 请求中设置标题

ruby - 在 ruby​​ 中创建大文件 xml

java - 我应该为具有大量必需属性的类创建一个构建器吗