Maison >développement back-end >Golang >Comment générer des éléments XML sans fermer les balises dans le package `encoding/xml` de Go ?
Génération d'un élément XML sans balise de fermeture
Dans Go, le package encoding/xml est largement utilisé pour regrouper des structures dans des documents XML. Cependant, un défi courant survient lorsque l'on tente de créer des éléments sans balises de fermeture, telles que
Considérez la structure suivante, qui représente une enveloppe XML avec des éléments imbriqués :
type TierRequest struct { // ... Header string `xml:"soapenv:Header"` Body TierBody `xml:"soapenv:Body"` } type TierBody struct { GetCollectorProfiles GetCollectorProfile `xml:"typ:GetCollectorProfileRequest"` } type GetCollectorProfile struct { Contexts CollectorContext `xml:"typ:Context"` Number int `xml:"typ:CollectorNumber"` } type CollectorContext struct { Channel string `xml:"Channel,attr"` Source string `xml:"Source,attr"` Language string `xml:"LanguageCode,attr"` }
Lors du marshaling de cette structure, le document XML résultant inclut des balises de fermeture pour
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http:/www.yahoo.com/tp/ets/2008/04/01/collector/types"> <soapenv:Header></soapenv:Header> <soapenv:Body> <GetCollectorProfiles> <typ:Context Channel="WEB" Source="WEB" LanguageCode="en-CA"></typ:Context> <typ:CollectorNumber>50000</typ:CollectorNumber> </GetCollectorProfiles> </soapenv:Body> </soapenv:Envelope>
Pour éliminer les balises fermantes, il est essentiel de comprendre les principes de XML. En XML, les éléments sans contenu peuvent être représentés soit par des balises d'élément vides (par exemple,
Selon la documentation, le package encoding/xml utilise des balises de fin pour les éléments avec attributs et des balises d'élément vides pour les éléments sans attributs. Puisque les deux
Bien qu'il puisse sembler préférable d'utiliser des balises d'élément vides pour des raisons de cohérence, il n'y a pas de différence fonctionnelle entre les deux formulaires en termes de validité XML. Les deux méthodes produisent des documents XML équivalents conformes à la spécification XML.
Par conséquent, il n'est pas recommandé de tenter de forcer le package encoding/xml à utiliser des balises d'élément vides pour les éléments avec des attributs. Au lieu de cela, acceptez le fait que ces éléments seront rendus avec des balises de fin, conformément au comportement standard du package.
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!