マップを XML データに変換しようとすると、開発者は「xml: unsupported type:map[string]」というエラーが発生する場合があります。 INT。」 JSON ではマップのマーシャリングが可能ですが、XML ではデフォルトでサポートされていません。
この問題に対する 1 つの解決策は、xml.Marshaler インターフェイスを利用することです。カスタム StringMap タイプを作成し、MarshalXML を実装することで、マップを XML にシリアル化する方法を制御できます。これにより、必要な構造と要素名を指定できます。
StringMap の MarshalXML の実装例を次に示します。
<code class="golang">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>
MarshalXML を実装したら、単純に xml.MarshalIndent を呼び出すことができます。データに基づいて必要な XML 出力を生成します。
以上がGo でマップを XML にマーシャリングする方法: 「xml: unsupported type: map[string]int」エラーが発生した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。