LinkedHashMap を指定して、groovy で完全な xml ツリーを構築しようとしています。
1) マップ:
def trees = [:]
trees.put(1,[id:'1',path:'ROOT/folder1',name:'folder1',isFolder:'true'])
trees.put(2,[id:'2',path:'ROOT/folder1/folder1.1',name:'folder1.1',isFolder:'true'])
trees.put(3,[id:'3',path:'ROOT/folder1/folder1.1/folder1.1.1',name:'folder1.1.1',isFolder:'true'])
trees.put(4,[id:'4',path:'ROOT/folder2',name:'folder2',isFolder:'true'])
trees.put(5,[id:'5',path:'ROOT/folder3',name:'folder3',isFolder:'true'])
trees.put(6,[id:'6',path:'ROOT/folder3/folder3.1',name:'folder3.1',isFolder:'true'])
2) ソート ツリー クロージャ:
//def rslt = { [:].withDefault{ owner.call() } }
def a = []
def rslt = { [:].withDefault{ owner.call() } }().with { t ->
trees.each { k, v ->
v.path.tokenize( '/' ).inject( t ) { tr, i -> tr[ i ] }
}
return t
}
3) たとえば、xml スラーパーを使用して Xml ドキュメントを作成する方法
モデルは次のようになります。
<ROOT>
<folder1 name="folder1" id="1" parent="ROOT" depth="1" path="ROOT/folder1">
<folder1.1 name="folder1.1" id="2" parent="folder1" depth="2" path="ROOT/folder1/folder1.1">
<folder1.1.1 name="folder1.1.1" id="3" parent="folder1.1" depth="3" path="ROOT/folder1.1/folder1.1.1"/>
</folder1.1>
</folder1>
...
</ROOT>
groovy.xml.MarkupBuilder(sw).with { のような sthg を使用してクロージャを探します
アイデアや提案はありますか?
BR。