一尘不染

将XML解组到地图中

go

如标题所示,我试图将XML直接解组到地图中,而不必先解组为结构,然后将结构转换为地图。我正在处理相当大的数据集,并且双重转换所花费的时间比预期的要多。

如果有人能对此提供任何指导,将不胜感激。

XML:重复classAccesses,还有其他一些元素。

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

我当前的结构:我首先解析出每个标头元素,然后使用子元素创建一个新结构

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

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

所需的地图:我想保留diffs结构,但我希望子结构“ ClassAccesses”与下面的地图相似。

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

阅读 203

收藏
2020-07-02

共1个答案

一尘不染

从Go 1.3开始,无法使用标准Go库将XML文档直接解组到地图中。

这里提供了标准库的XML部分,http://golang.org/pkg/encoding/xml/,没有任何函数可以完全满足您在问题中的要求。

根据您的具体情况,您可能还有其他选择,例如:

  • 并行化您的算法,即从文件中读取并同时解码。仅当您要读取多个文件时,此方法才能很好地工作。
  • 在Go中编写您自己的XML解码算法。
2020-07-02