0
我正在嘗試使用StreamingMarkupBuilder構建XML文檔。我不知道元素的標籤名稱是什麼,直到運行時,所以我試圖找到一種方法在StreamingMarkupBuilder.bind()中指定它。我已經看到如何指定元素屬性和值,但不是標籤名稱。有任何想法嗎?如何在運行時指定StreamingMarkupBuilder標籤名稱?
def xmlBuilder = new StreamingMarkupBuilder()
def xmlString = xmlBuilder.bind {
root {
for (MyClass obj : MyClass.list()) {
obj.getTagName(myValue)
}
}
}.toString()
return xmlString
我想獲得:
<root>
<FoundTagName>myValue</FoundTagName>
</root>
編輯
這裏是我結束了:
MyClass.list().each { f ->
"$f.tagName"(f.getValue())
}
我認爲這是值得注意的是,內雙引號我使用屬性名稱而不是方法名稱。
謝謝;這幫助了很多。我編輯了我的答案,將您對地圖的建議與我如何使用我的對象結合在一起。 – Joey
一年之後的另一個問題:如果我想將''k'(v)''外部化爲閉包?在那裏我可以重複使用它的'K'的不同值,也可以做一些類似於空檢查的事情,我得到的問題就是簡單地從外部閉包返回''$ k「(v)'會使groovy抱怨undefined方法簽名k(String) –