Groovy嵌套(递归?)XML

Groovy嵌套(递归?)XML,groovy,Groovy,给定一个包含ID和元素的对象列表,我需要遍历该列表并生成如下所示的XML: <object id="1"> <element>...</element> <object id="2"> <element>...</element> <object id="3"> <element>...</element>

给定一个包含ID和元素的对象列表,我需要遍历该列表并生成如下所示的XML:

<object id="1">
    <element>...</element>
    <object id="2">
        <element>...</element>
        <object id="3">
            <element>...</element>
            </object>
        </object>
    </object>

...
...
...
注意:每个对象都是在上一个对象中创建的,对象仅在列表末尾关闭。(不是我的选择,由外部接口决定)

有没有一种方法可以使用XML标记生成器生成此标记?

类MyElement{
class MyElement {
  def id
  def element
}

def list = [new MyElement(id: 1, element: "element1"),
            new MyElement(id: 2, element: "element2"),
            new MyElement(id: 3, element: "element3")]

println new groovy.xml.StreamingMarkupBuilder().bind {
  def foo // note declaration and initialization on different lines
  foo = { List<MyElement> l ->
    if (l.isEmpty()) return
    def head = l.head()
    def tail = l.tail()
    object {
      id head.id
      element head.element
      foo(tail)
    }
  }
  foo(list)
}
定义id def元件 } def list=[新的MyElement(id:1,元素:“element1”), 新的MyElement(id:2,element:“element2”), 新的MyElement(id:3,element:“element3”)] println new groovy.xml.StreamingMarkupBuilder().bind{ def foo//注意不同行上的声明和初始化 foo={List l-> if(l.isEmpty())返回 def头=l.头() def tail=l.tail() 反对{ 头像 元素头 富(尾) } } 傅(名单) }
输出(美化):


1.
要素1
2.
元素2
3.
元素3
`
类MyElement{
定义id
def元件
}
def list=[新的MyElement(id:1,元素:“element1”),
新的MyElement(id:2,element:“element2”),
新的MyElement(id:3,element:“element3”)]
println new groovy.xml.StreamingMarkupBuilder().bind{
def foo//注意不同行上的声明和初始化
foo={List l->
if(l.isEmpty())返回
def头=l.头()
def tail=l.tail()
反对{
头像
元素头
富(尾)
}
}
傅(名单)
}
输出(美化):


1.
要素1
2.
元素2
3.
元素3
`
<object>
  <id>1</id>
  <element>element1</element>
  <object>
    <id>2</id>
    <element>element2</element>
    <object>
      <id>3</id>
      <element>element3</element>
    </object>
  </object>
</object>`