2014-11-03 116 views
0

正如標題所述,我試圖將我的XML直接解組映射到映射中,而不必先解組成一個結構,然後將結構轉換爲映射。我正在處理一個相當大的數據集,雙重轉換需要的時間比預期的要多。將XML解組映射到地圖

如果任何人都可以提供任何指導,這將不勝感激。

XML:classAccesses重複,還有一些其他元素。

<classAccesses> 
    <apexClass>AccountRelationUtility</apexClass> 
    <enabled>true</enabled> 
</classAccesses> 

我現在的結構:我分析出每個頭元素的第一,然後創建一個與孩子新的結構elemtnts

type classAccesses struct { 
    ApexClass string `xml:"apexClass"` 
    Enabled string `xml:"enabled"` 
} 

type diffs struct { 
    ClassAccesses []classAccesses `xml:"classAccesses"` 
} 

所需的地圖:我想保持的diff結構,但我希望子結構「ClassAccesses」變得類似於下面的地圖。

map[string]string { 
    "ApexClass": "enabled" 
} 
+2

顯示XML尋求幫助。 – Volker 2014-11-03 23:03:53

+0

對於遲到的回覆,我添加了XML以及一些額外的詳細信息,內容正是我所追求的。 – acher 2014-11-04 15:16:57

+0

看到[this](https://stackoverflow.com/questions/23066758/how-can-i-write-an-array-of-maps-golang#23066950)回答,也許它可以幫助你轉換unmarshalled數組映射(在你從xml_解組之後)。 – 2017-05-22 18:42:17

回答

1

從Go 1.3開始,不可能使用標準Go庫將XML文檔直接解組映射到映射中。

標準庫的XML部分在這裏給出,http://golang.org/pkg/encoding/xml/,沒有功能可以完全滿足您在問題中所要求的功能。

根據你的情況的細節,你可以有其他選擇,如:

  • Parallelise你的算法,即從文件和解碼在同一時間讀取。如果你有多個文件需要讀取,這將只會工作得很好。
  • 在Go中編寫您自己的XML解碼算法。
+0

這真的很不幸...猜猜我只需要將兩個文件的算法並行化。目標是比較兩個文件並列出差異。 – acher 2014-11-04 17:21:44