2017-01-21 1 views
0

ID와 요소를 포함 개체의 목록을 감안할 때, 나는 목록을 반복하고 다음과 같습니다 XML을 생성 할 필요가 이전 오브젝트 내에서, 오브젝트는 목록의 끝에서만 닫힙니다. (내 선택이 아니라 외부 인터페이스에 의해 결정됨)그루비 중첩 (? 재귀) 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) 
} 

출력 (prettified) :

<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

큰 반응은, 감사합니다! –