2017-01-21 7 views
0

IDと要素が含まれているオブジェクトのリストを考えると、私は、リストを反復処理すると、このようなXMLを生成する必要があります前のオブジェクトの内部にあり、オブジェクトはリストの最後でのみ閉じられます。 (私の選択ではなく、外部インターフェイスによって指示されます)Groovyの入れ子になった(?再帰)XML

XMLマークアップビルダーを使用してこれを作成する方法はありますか?

答えて

2
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) 
} 

出力(清書):

<object> 
    <id>1</id> 
    <element>element1</element> 
    <object> 
    <id>2</id> 
    <element>element2</element> 
    <object> 
     <id>3</id> 
     <element>element3</element> 
    </object> 
    </object> 
</object>` 
+0

偉大な応答が、ありがとうございました! –

関連する問題