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