Go で Marshall が XML にマップする: xml.Marshaler による構造体を超えて
エラー「xml: unsupported type: map[string]」が発生するint" を使用してマップを XML データにマーシャリングしようとすることは珍しいことではありません。マップは JSON に適切にマーシャリングされますが、XML での動作を理解するには、より深く理解する必要があります。
主な違いは、XML 自体の性質にあります。データをキーと値のペアのネストされた階層として扱う JSON とは異なり、XML はデータを要素と属性の階層として構造化します。この区別により、マップの直接変換が禁止されます。
この課題を克服するには、カスタム実装が必要です。ここでは、カスタマイズされたマーシャリング ロジックを可能にする xml.Marshaler インターフェイスを使用します。 MarshalXML を実装することで、マップをシリアル化する具体的な方法を定義します。
たとえば、map[string]string データ構造を埋め込む StringMap というカスタム タイプを作成できます。 MarshalXML 内で、マップを表す開始要素と終了要素を含む XML トークンを構築します。キーと値のペアごとに、要素名としてキー、文字データとして値を持つ開始要素と終了要素を生成します。
この MarshalXML メソッドを実装することにより、StringMap はそれ自体を XML 形式にマーシャリングする機能を獲得します。これで、マップのマーシャリングが簡単になり、xml.MarshalIndent を呼び出すだけになります。このカスタム アプローチは、XML マーシャリングの構造体のみに依存する以上の実行可能なソリューションを提供します。
以上がGo でマップを XML にマーシャリングする方法: `xml.Marshaler` を使用して構造体を超えての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。