1
給出地圖ID和路徑,對於給定的節點,我建立一個XML樹:XML樹建設者常規
def trees = [:]
trees.put(1,"TEST/folder1")
trees.put(2,"TEST/folder2")
trees.put(3,"TEST/folder1/folder1.1")
trees.put(4,"TEST/folder2/folder2.1/folder2.1.2")
trees.put(5,"TEST/folder1/folder1.2")
trees.put(6,"TEST/folder1/folder1.2/folder1.2.1/")
trees.put(7,"TEST/folder1/folder1.2/folder1.2.2/")
trees.put(8,"TEST/folder1/folder1.2/folder1.2.2/1.2.2.1")
sw = new StringWriter()
def rslt = { [:].withDefault{ owner.call() } }().with { t ->
trees.each { k, v ->
v.tokenize('/').inject(t) { tr, i -> tr[ i ] }
}
return t
}
new groovy.xml.MarkupBuilder(sw).with {
visitor = { k, v -> "$k" { v instanceof Map ? v.collect(visitor) : mkp.yield(v) } }
ROOT { rslt.collect visitor }
}
println sw.toString()
最後得到如下的輸出:
<TEST>
<folder1>
<folder1.1 />
<folder1.2>
<folder1.2.1 />
<folder1.2.2>
<1.2.2.1 />
</folder1.2.2>
</folder1.2>
</folder1>
<folder2>
<folder2.1>
<folder2.1.2 />
</folder2.1>
</folder2>
</TEST>
</ROOT>
是有一個Groovy添加屬性id,名稱,父深度,url,從初始樹形圖值
形成的阱XML文檔的實施例:
<folder2 name="folder2" id="2" parent="TEST" depth="1" url="TEST/folder2">
<folder2.1.1 name="folder2.1.1" id="2" parent="TEST" depth="2" url="TEST/folder2">
<folder2.1.1.1 name="folder2.1.1.1" id="3" parent="TEST" depth="3" url="TEST/folder2"/>
</folder2.1.1>
</folder2>
任何意見或建議?
乾杯
你有模特課嗎? – Will 2013-02-28 11:52:25
模型類是一個域,具有存儲在其中的字符串路徑和標識 – 2013-02-28 14:58:06