2009-12-07 1 views
2

의 중간에 노드를 추가 (이상한 제목 죄송합니다 ...) 나는 XML을 생성하기 위해 그루비 빌더 시스템을 사용하려는에 "봉투"와 그루비 XML을 생성 - xml 형식 구조

.

내 문제는 주위에 어떤 종류의 봉투를 갖고 싶다는 것입니다. 사용자가 신경 쓰지 않아도됩니다.

예 :

def builder = new groovy.xml.MarkupBuilder() 
builder.foo() { 
    bar('hello') 
} 

이 생성해야합니다 말을 할 수

때문에 사용자가 미리 정의 된 노드에서 자신의 XML 구조를 추가 할 수있는 백그라운드에서 XML 구조가 (이 있음을
<Something id:'123'> 
    <AnyInfo> 
     <foo> 
      <bar>hello</bar> 
     </foo> 
    </AnyInfo> 
</Something> 

예제의 'AnyInfo')

마크 업 도구 (또는 다른 빌더)가있는 노드를 어떻게 추가 할 수 있습니까? 봉투?

나는 이것이 어떻게 든 이해할 수 있기를 바란다.

감사 마티

답변

6

당신은 폐쇄 쉽게이 작업을 수행 할 수 있습니다. 래퍼를 작성하기위한 클로저를 작성합니다. 그런 다음 실제 내용을 만드는 클로저에 동적으로 손을 넣을 수 있습니다. 예 :

def writer = new StringWriter() 
def builder = new groovy.xml.MarkupBuilder(writer) 

def createWrapper = {Closure c-> 
    builder.Something(id:123) { 
     AnyInfo() { 
      c() 
     } 
    } 
} 

createWrapper { 
    builder.foo() { 
     bar('hello') 
    } 
} 

println writer.toString() 

작성한 결과는 찾고 있던 샘플 XML입니다.

+0

위대한 - 쉽고 깔끔 ... 감사합니다 :) – Marty