「プロパティ」という要素を含む xml を生成する必要があります。次のことを試みると、 への呼び出しによって証明されるように、groovy がクラスのプロパティを取得しようとしていることに気付きますgetSomething
。代わりに、「プロパティ」という名前の要素のみを生成する必要があります。
class XMLGen
{
public String getSomething() {
println "Got something"
}
public String genXml()
{
def myProps = ['a':1, 'b':2]
def xml = new groovy.xml.StreamingMarkupBuilder().bind{
rootTag{
properties{ // ???
myProps.each{ prop ->
property(key: prop.key, value: prop.value)
}
}
}
}
return groovy.xml.XmlUtil.serialize(xml)
}
}
println new XMLGen().genXml()
出力:
Got something
<?xml version="1.0" encoding="UTF-8"?><rootTag>
<properties>
<property key="a" value="1"/>
<property key="b" value="2"/>
</properties>
</rootTag>
オンラインでメソッド呼び出し (??? とマーク) をマークアップ ビルダーに渡すように、明示的に groovy に「伝える」にはどうすればよいでしょうか?
(この質問をして、どこにも解決策が見つからなかったので自分で答えましたが、最終的に正しい答えを「推測」しました)