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>
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"` }
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"` }
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 }
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!