Go 中的 Marshall 映射到 XML
尝试将映射转换为 XML 数据时,可能会遇到错误:
xml: unsupported type: map[string]int
虽然将映射编组为 JSON 很简单,但使用结构可能不是唯一的选择。
要解决此问题,可以使用 xml.Marshaler 接口:
<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>
通过为自定义 StringMap 类型实现 MarshalXML 方法,可以将映射编组为 XML。
要使用编组的 XML:
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
以上是如何将 Go Map 转换为 XML 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!