問題:
您需要將 XML資料解組到映射中,而不是先解組為結構,然後將結構轉換為映射,這對於大型資料集來說花費了太多時間dataset.
<classAccesses> <apexClass>AccountRelationUtility</apexClass> <enabled>true</enabled> </classAccesses>
所需映射:
map[string]string{ "ApexClass": "enabled" }
解決方案:
實現xml.Unmarshaller 介面表示所需地圖的自訂類型結構:
type classAccessesMap struct { m map[string]string } func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { c.m = map[string]string{} key := "" val := "" for { t, _ := d.Token() switch tt := t.(type) { // TODO: ... 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 } } } }
然後,使用 xml.Unmarshal 函數將 XML 資料直接解析為自訂類型:
var classAccesses classAccessesMap if err := xml.Unmarshal(data, &classAccesses); err != nil { // Handle error } fmt.Println(classAccesses.m)
以上是如何直接將 XML 解組到 Go Map ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!