XML-Element ohne schließendes Tag generieren
In Go wird das Paket „encoding/xml“ häufig zum Marshallen von Strukturen in XML-Dokumenten verwendet. Eine häufige Herausforderung entsteht jedoch, wenn versucht wird, Elemente ohne schließende Tags zu erstellen, wie z. B.
Bedenken Sie die folgende Struktur, die einen XML-Umschlag mit verschachtelten Elementen darstellt:
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"` }
Beim Marshalling dieser Struktur enthält das resultierende XML-Dokument schließende Tags für beide
<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>
Um die schließenden Tags zu eliminieren, ist es wichtig, die Prinzipien von XML zu verstehen. In XML können Elemente ohne Inhalt entweder als leere Element-Tags (z. B.
Laut Dokumentation verwendet das Paket „encoding/xml“ End-Tags für Elemente mit Attributen und leere Element-Tags für Elemente ohne Attribute. Da beide
Obwohl es aus Gründen der Konsistenz besser erscheinen mag, leere Element-Tags zu verwenden, gibt es hinsichtlich der XML-Gültigkeit keinen funktionalen Unterschied zwischen den beiden Formen. Beide Methoden erzeugen gleichwertige XML-Dokumente, die der XML-Spezifikation entsprechen.
Daher wird nicht empfohlen, das Paket „encoding/xml“ dazu zu zwingen, leere Element-Tags für Elemente mit Attributen zu verwenden. Akzeptieren Sie stattdessen die Tatsache, dass diese Elemente gemäß dem Standardverhalten des Pakets mit End-Tags gerendert werden.
Das obige ist der detaillierte Inhalt vonWie generiert man XML-Elemente ohne schließende Tags im „encoding/xml'-Paket von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!