2011-09-06 1 views
2

하드 코딩되지 않은 노드를 만드는 방법을 알아낼 수 없습니다. 예 :Grails : 변수를 사용하여 XML 노드 만들기

def aval = "someValue" 
def xml = new MarkupBuilder() 

xml.outTag(attr: aval) // outTag is hardcoded 

내 문제 : 나는 (처럼 내 예제에서, 나는 outTag 변수로 무엇을 원하는 경우) 노드의 이름을 모르는 무엇을합니다. 내가 디렉토리/파일을 읽고 그것으로부터 XML을 만들 때 이것을 사용하고있다. 감사.

답변

7

사용이 형식 :

import groovy.xml.MarkupBuilder 

def dynamicTag = "blah" 
def aval = "someValue" 
def xml = new MarkupBuilder() 

xml."$dynamicTag"(attr: aval) 

이것은 나를 위해 일한 (그루비 1.8)

+0

감사합니다. 그게 효과가 있었어. 몇 가지 이상한 이유로, 나는이 튜토리얼을 찾을 수 없습니다. 도움에 감사드립니다. – ibaralf

+0

좋아요! 이 기능이 작동 했으므로이 응답을 "수락 됨"으로 표시하십시오. – OverZealous

+0

작동 원리는 동적 표기법 개체를 사용하여 모든 메서드를 호출 할 수 있다는 것입니다. "$ methodName"여기서 methodName은 값의 메서드 이름을 갖는 문자열 변수입니다. – Uberto