Maison > développement back-end > Golang > Comment puis-je définir dynamiquement les noms d'éléments XML lors du marshaling dans Go ?

Comment puis-je définir dynamiquement les noms d'éléments XML lors du marshaling dans Go ?

Linda Hamilton
Libérer: 2024-12-02 08:41:13
original
337 Les gens l'ont consulté

How Can I Dynamically Set XML Element Names During Marshaling in Go?

Noms d'éléments dynamiques dans le marshaling XML

Les documents XML contiennent souvent des éléments avec des structures similaires mais des noms différents. Pour gérer cela dans Go, vous vous demandez peut-être s'il est possible de modifier le nom de l'élément de manière dynamique lors du marshaling XML.

Définition de la structure

Considérons le document XML suivant avec deux éléments, "PERSON" et "SENDER", contenant les mêmes éléments avec des noms différents :

<PERSON>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</PERSON>

<SENDER>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</SENDER>
Copier après la connexion

Au départ, vous pouvez essayer pour définir une structure comme celle-ci, où le nom de l'élément est défini de manière statique :

type Person struct {
    XMLName string `xml:"PERSON"` // Static element name
    E1 string `xml:"ELEM1"`
    E2 string `xml:"ELEM2"`
    E3 string `xml:"ELEM3"`
    E4 string `xml:"ELEM4"`
}
Copier après la connexion

Nom de l'élément dynamique

Pour rendre le nom de l'élément dynamique, vous devez utiliser le type xml.Name au lieu d'une chaîne :

type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    E2 string `xml:"ELEM2"`
    E3 string `xml:"ELEM3"`
    E4 string `xml:"ELEM4"`
}
Copier après la connexion

Maintenant, vous pouvez définir le nom de l'élément de manière dynamique en utilisant le champ Local de xml.Name :

person := Person{
    XMLName: xml.Name{Local: "Person"},
    // ... Set other fields
}
Copier après la connexion

Cela vous permet de générer dynamiquement le nom de l'élément XML en fonction des données spécifiques que vous marshalez.

Exemple

Un exemple fonctionnel peut être trouvé sur Go Playground : http://play.golang.org/p/bzSutFF9Bo.

Avec cette technique, vous pouvez créer des structures qui gèrent des éléments XML avec des noms différents, offrant ainsi flexibilité et extensibilité dans votre code de gestion XML.

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