Marshall Maps zu XML in Go
Beim Versuch, eine Karte in XML-Daten zu konvertieren, kann ein Fehler auftreten:
xml: unsupported type: map[string]int
Obwohl es unkompliziert ist, Karten in JSON zu marsallieren, ist die Verwendung einer Struktur möglicherweise nicht die einzige Option.
Um dieses Problem zu lösen, kann die xml.Marshaler-Schnittstelle verwendet werden:
<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>
Durch die Implementierung der MarshalXML-Methode für einen benutzerdefinierten StringMap-Typ kann die Karte als XML gemarshallt werden.
So verwenden Sie das gemarshallte XML:
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
Das obige ist der detaillierte Inhalt vonWie konvertiert man eine Go-Map in XML-Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!