2012-10-08 4 views
10

をGROOVYする属性コンパイル時間)。実行時まで属性名がわからないXML文書を作成しようとするとどうなりますか?私はまだこのような問題を解決するために必要な構文を理解していません。は、動的な要素を追加し、(属性名は全く知られている私は、XML文書を構築するためのGroovyのMarkupBuilderをを使用して多くの例を見てきましたが、それらはすべて、文書内のすべての要素のための静的属性を使用するように見えるMarkupBuilderをまたはStreamingMarkupBuilder

+0

は、あなただけのマップを渡すことはできません変数名をキーとして、すなわち: 'node([(key):" value "])' –

+0

はい!私は以前これをやろうとしていましたが、私のためには機能しませんでした(マップは属性としてではなくサブ要素として追加されていました)。しかし、あなたの反応は、私がそれを間違ってやっていないことを確かめるように促しました。私はかなりグルーヴィーになっていて、最初は空のマップをリスト([]と[:])として宣言していました。プッシュ、ありがとう!ありがとう! – pneumee

+0

Np :-)私は質問に答えとしてこれを完全に書いた:私は最初に思ったように働いていることを確認したかった。 –

答えて

5

属性名をキーとしてマップを作成する必要があります。あなたは、Groovyのはあなたではなく、キーaよりaの値を使用することを意味知っているように、中括弧でキーをラップする必要があります。

import groovy.xml.MarkupBuilder 

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

生成されます。

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

ありがとう!ちょうど、私の解決策では、私は中括弧でキーを囲みませんでした。 – pneumee

+0

サイクルで行うことは可能ですか? – RredCat

関連する問題