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
Libérer: 2024-11-22 18:13:13
original
753 Les gens l'ont consulté

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"`
    // ...
}
Copier après la connexion

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))
}
Copier après la connexion

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