Maison  >  Article  >  développement back-end  >  Comment créer des éléments XML sans fermer les balises dans Go ?

Comment créer des éléments XML sans fermer les balises dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 03:02:03462parcourir

How to Create XML Elements without Closing Tags in Go?

Créer un élément XML sans balise de fermeture dans Go

Dans ce scénario, vous disposez d'une structure Go imbriquée qui représente une enveloppe XML avec des éléments imbriqués .

// TierRequest is the outer most XML envelope of soap request
type TierRequest struct {
    XMLName   xml.Name `xml:"soapenv:Envelope"`
    NsEnv     string   `xml:"xmlns:soapenv,attr"`
    NsType    string   `xml:"xmlns:typ,attr"`
    Header    string   `xml:"soapenv:Header"`
    Body      TierBody `xml:"soapenv:Body"`
}

// TierBody is an emtpy container with the GetCollectorProfile struct
type TierBody struct {
    GetCollectorProfiles GetCollectorProfile `Collectorxml:"typ:GetCollectorProfileRequest"`
}

// GetCollectorProfile struct has the context and collector number
type GetCollectorProfile struct {
    Contexts CollectorContext `xml:"typ:Context"`
    Number   int              `xml:"typ:CollectorNumber"`
}

// CollectorContext contanins a few variables as attributes
type CollectorContext struct {
    Channel  string `xml:"Channel,attr"`
    Source   string `xml:"Source,attr"`
    Language string `xml:"LanguageCode,attr"`
}

Vous marshalez cette structure en XML en utilisant encoding/xml, mais vous souhaitez vous débarrasser des balises de fermeture pour soapenv:Header et typ:Context pour avoir des balises d'élément vides comme .

Il n'y a pas de différence au niveau XML entre ces deux formes, car une balise d'élément vide est fonctionnellement équivalente à une balise de fin pour un élément sans contenu. En d'autres termes, le contenu du XML sera le même dans les deux cas :

<soapenv:Header></soapenv:Header>
<soapenv:Header/>

Par conséquent, il n'est pas possible de contrôler l'utilisation de balises d'élément vides par rapport aux balises de fin à l'aide du XML standard. techniques.

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