Marshall Maps to XML in Go
Lors de la tentative de conversion d'une carte en données XML, une erreur peut survenir :
xml: unsupported type: map[string]int
Bien qu'il soit simple de rassembler des cartes vers JSON, l'utilisation d'une structure n'est peut-être pas la seule option.
Pour résoudre ce problème, l'interface xml.Marshaler peut être utilisée :
<code class="go">// Marshal maps into XML. func (s StringMap) MarshalXML(e *xml.Encoder, 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.EncodeToken(t) if err != nil { return err } } // flush to ensure tokens are written return e.Flush() }</code>
En implémentant la méthode MarshalXML pour un type StringMap personnalisé, la carte peut être marshallée au format XML.
Pour utiliser le XML marshallé :
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!