我最终按照DaveC的建议使用xml.Marshaler解决了这个问题
// StringMap is a map[string]string.type StringMap map[string]string// StringMap marshals into XML.func (s StringMap) MarshalXML(e *xml.Enprer, start xml.StartElement) error { tokens := []xml.Token{start} for key, value := range s { t := xml.StartElement{Name: xml.Name{"", key}} tokens = append(tokens, t, xml.CharData(value), xml.EndElement{t.Name}) } tokens = append(tokens, xml.EndElement{start.Name}) for _, t := range tokens { err := e.EnpreToken(t) if err != nil { return err } } // flush to ensure tokens are written return e.Flush()}资料来源:https :
//gist.github.com/jackspirou/4477e37d1f1c043806e0
现在,只需调用即可将地图编组
output, err := xml.MarshalIndent(data, "", " ")



