直接将 XML 解组到 Map
将 XML 直接解组到 Map 可以通过消除中间结构转换来优化数据处理
实现:
要实现此目的,请创建一个实现 xml.Unmarshaller 接口的类型,允许将 XML 数据直接映射到map[string]string.
type classAccessesMap struct { m map[string]string } // UnmarshalXML implements the xml.Unmarshaller interface func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { c.m = make(map[string]string) var key, val string for { t, _ := d.Token() switch tt := t.(type) { // TODO: parse the inner structure case xml.StartElement: fmt.Println(">", tt) case xml.EndElement: fmt.Println("<", tt) if tt.Name == start.Name { return nil } if tt.Name.Local == "enabled" { c.m[key] = val } } } }
用法:
将自定义类型应用于 unmarshal 操作,直接将 XML 数据映射到映射中:
// Unmarshalling into a map var cm classAccessesMap err := xml.Unmarshal([]byte(`<classAccesses>\n <apexClass>AccountRelationUtility</apexClass>\n <enabled>true</enabled>\n</classAccesses>`), &cm) if err != nil { fmt.Println(err) }
这种方法通过避免双重转换的开销来简化数据处理,从而提高大数据的性能套装。
以上是如何直接将XML解组到Go Map中以优化数据处理?的详细内容。更多信息请关注PHP中文网其他相关文章!