La tâche de construction de documents XML à partir de structures Go peut poser des défis, en particulier lorsqu'il s'agit de avec différents noms d'éléments. La question se pose : peut-on définir une structure Go qui autorise les noms d'éléments dynamiques pendant le processus de marshaling XML ?
La documentation Go indique que le champ XMLName dans une structure doit être de type xml.Name, pas une chaîne. Cette structure contient deux champs : "Espace" et "Local". Pour définir un nom d'élément dynamique, modifiez le champ "Local" dans le type xml.Name.
type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` // ... }
Dans cet exemple, nous' j'aurai une structure avec le nom de l'élément étant "Personne" ou "Expéditeur" basé sur la valeur stockée dans XMLName.Local field.
import ( "encoding/xml" "fmt" ) type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` // ... } func main() { person := Person{XMLName: xml.Name{Local: "Person"}, E1: "Value1"} sender := Person{XMLName: xml.Name{Local: "Sender"}, E1: "Value1"} // Marshal the struct into XML personXML, _ := xml.Marshal(person) senderXML, _ := xml.Marshal(sender) fmt.Println(string(personXML)) fmt.Println(string(senderXML)) }
Cet exemple produit deux documents XML distincts, l'un avec le nom d'élément « Personne » et l'autre avec le nom d'élément « Expéditeur ».
Pour une version interactive de cet exemple, visitez Go Playground : http://play.golang.org/p/bzSutFF9Bo
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!