Maison >développement back-end >Golang >Comment puis-je rassembler des éléments XML avec des noms dynamiques dans Go ?

Comment puis-je rassembler des éléments XML avec des noms dynamiques dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-22 18:13:13696parcourir

How Can I Marshal XML Elements with Dynamic Names in Go?

Marshaling d'éléments XML avec des noms dynamiques dans Golang

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 ?

XMLName et Dynamic Element Names

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"`
    // ...
}

Example

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 ».

Exemple de terrain de jeu< ;/h3>

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!

Déclaration:
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