2016-10-20 5 views
0
def text= '''<Rollback> <Kits> 
<Kit ServerName='ust1twastool01a'> 
    <Backup>2016-10-18_20_34-46-_server-21.000.409_client-21.000.407.zip</Backup> 
    <Backup>2016-10-18_21_57-33-_server-21.000.409_client-21.000.407.zip</Backup> 
    <Backup>2016-10-19_02_40-03-_server-21.000.413_client-21.000.407.zip</Backup> 
    <Backup>2016-10-19_13_58-36-_server-21.000.413_client-21.000.407.zip</Backup> 
    <Backup>2016-10-20_03_14-34-_server-21.000.413_client-21.000.407.zip</Backup> 
</Kit> 
<Kit ServerName='another_server'> 
    <Backup>123123.zip</Backup> 
    <Backup>321321.zip</Backup> 
</Kit> 
</Kits></Rollback>''' 


def xml = new XmlSlurper().parseText(text) 
def map = [:] 
i = 0 
xml.Kits.Kit.each{node-> 
    def list = [] 
    node.Backup.each{kit-> 
    list.add(kit) 
} 
map.put([email protected], list) 
} 

print map // print map with all keys and values 

// Somehow, it's not working ... 
print map['ust1twastool01a'] 

def map2 = ['1':["abc","123"], '2':["bcd", "456"]] 
print map2['1'] 

私はこの日のコードで悩まされています。私はなぜマップ['ust1twastool01a']によって価値を得ることができないのか分かりません。キーでマップの値をGroovyで取得する

コンソールからスクリーンショットを添付しました。マップが空ではなく、キーで値を取得できないことを示しています。それは以下のように値enter image description here

答えて

2

使用などのキーとリストとして文字列をマップするために同様の構造を持っているようMAP2だけのグループを制御している:サイドノートで

map.put([email protected](), list) 

、私はあなただけに、コードを簡略化することができると信じて:

def xml = new XmlSlurper().parseText(text) 
def map = xml.Kits.Kit.collectEntries { node -> 
    [ [email protected](), node.Backup.collect() ] 
} 
+1

感謝@dmahapatro、私の人生を保存しました。今夜は良い睡眠を取ることができた – user1888955

関連する問題