Maison > développement back-end > Golang > Comment rassembler une carte vers XML dans Go : une structure est-elle le seul moyen ?

Comment rassembler une carte vers XML dans Go : une structure est-elle le seul moyen ?

Barbara Streisand
Libérer: 2024-10-29 18:31:02
original
346 Les gens l'ont consulté

How to Marshal a Map to XML in Go: Is a Struct the Only Way?

Marshall Map to XML in Go

Vous rencontrez une erreur lors de la tentative de marshal d'une map vers des données XML ? Jetez un œil à cet article pour trouver une solution.

La populaire conversion JSON vers XML est bien connue pour l'utilisation de cartes. Cependant, lorsqu’il s’agit de XML, les choses prennent une tournure différente. Vous vous demandez peut-être pourquoi les cartes ne se comportent pas de la même manière dans les deux situations. Est-il vrai que l'utilisation d'un Struct est la seule solution viable ici ?

Solution

Une solution brillante a été trouvée en utilisant le type xml.Marshaler . Voici comment cela fonctionne :

  1. Définissez un type StringMap : Créez un type personnalisé pour représenter votre carte, baptisé StringMap. Ce type aura une structure sous-jacente map[string]string.
  2. Implémentez la méthode MarshalXML : StringMap doit implémenter la méthode MarshalXML de l'interface xml.Marshaler. Cette méthode traduit une carte en XML.
  3. Encoder les valeurs de la carte : Parcourez les paires clé-valeur de la carte, générant des jetons xml.StartElement pour chaque clé et xml.CharData jetons pour chaque valeur.
  4. Flush et return : Pour écrire les jetons XML et vider le tampon, utilisez EncodeToken et Flush méthodes.
Une fois que vous avez créé un type StringMap personnalisé qui implémente

xml.Marshaler, le marshalling de la carte en XML est aussi simple que :

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>
Copier après la connexion
Cette méthode fournit un moyen pratique de gérer les cartes dans le marshalling XML, éliminant ainsi le besoin de recourir à Structs.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal