2012-10-08 1 views
10

Groovy의 MarkupBuilder를 사용하여 XML 문서를 작성하는 많은 예제를 보았지만 모두 문서의 모든 요소에 대해 정적 속성을 사용합니다 (속성 이름은 모두 컴파일 시간). 런타임까지 속성 이름을 알 수없는 XML 문서를 생성하려고하면 어떻게 될까요? 나는 아직 문법이 이와 같은 문제를 해결할 필요가 있음을 알지 못했다.Groovy MarkupBuilder 또는 StreamingMarkupBuilder에 동적 요소 및 속성 추가

+0

을 그냥지도를 전달할 수 없습니다 그루비 알고 오히려 a 키가보다 a의 값을 사용하는 것을 의미 있도록 중괄호의 키를 포장 할 필요가 변수 이름을 키로 사용한다. 예 :'node ([(key) : "value"])' –

+0

예! 나는 이전에 그 일을하려고했지만, 그것은 나를 위해 일하지 않았다. (지도는 속성이 아니라 하위 요소로 추가되었다.) 그러나 당신의 반응은 내가 잘못하고 있는지, 내가 충분히 확신하고 있는지를 확인시켜주었습니다. 나는 꽤 멋져요. 처음에는 빈지도를 목록으로 선언했습니다 ([] vs [:]). 푸시 주셔서 감사합니다, 팀! – pneumee

+0

Np :-) 나는 질문에 대한 답으로서 이것을 완전히 썼다 :-) 내가 처음 생각한대로 작동하는지 확인하고 싶었다. –

답변

5

키와 같은 속성 이름을 가진 맵이이를 수행해야합니다.

import groovy.xml.MarkupBuilder 

new MarkupBuilder().root { 
    def a = 'dynAttr' 
    node([ (a):'woo' ]) 
} 

생성 다음과 같습니다 :

<root> 
    <node dynAttr='woo' /> 
</root> 
+0

감사합니다! 그냥 참고하시기 바랍니다, 내 솔루션에서 나는 중괄호로 키를 둘러싸 지 않고 여전히 훌륭하게 작동했습니다. – pneumee

+0

주기적으로 처리 할 수 ​​있습니까? – RredCat