Maison >développement back-end >Golang >Comment créer des éléments XML sans fermer les balises dans 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!