将XML解组映射到地图

问题描述:

正如标题所述,我试图将我的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://*.com/questions/23066758/how-can-i-write-an-array-of-maps-golang#23066950)回答,也许它可以帮助你转换unmarshalled数组映射(在你从xml_解组之后)。 – 2017-05-22 18:42:17

从Go 1.3开始,不可能使用标准Go库将XML文档直接解组映射到映射中。

标准库的XML部分在这里给出,http://golang.org/pkg/encoding/xml/,没有功能可以完全满足您在问题中所要求的功能。

根据你的情况的细节,你可以有其他选择,如:

  • Parallelise你的算法,即从文件和解码在同一时间读取。如果你有多个文件需要读取,这将只会工作得很好。
  • 在Go中编写您自己的XML解码算法。
+0

这真的很不幸...猜猜我只需要将两个文件的算法并行化。目标是比较两个文件并列出差异。 – acher 2014-11-04 17:21:44