Menjana Elemen XML tanpa Teg Penutup
Dalam Go, pakej pengekodan/xml digunakan secara meluas untuk menyusun struct ke dalam dokumen XML. Walau bagaimanapun, cabaran biasa timbul apabila cuba mencipta elemen tanpa menutup teg, seperti
Pertimbangkan struct berikut, yang mewakili sampul XML dengan elemen bersarang:
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"` }
Apabila menyusun struct ini, dokumen XML yang terhasil termasuk tag penutup untuk kedua-duanya
<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>
Untuk menghapuskan teg penutup, adalah penting untuk memahami prinsip XML. Dalam XML, elemen tanpa kandungan boleh diwakili sama ada sebagai teg unsur kosong (cth.,
Menurut dokumentasi, pakej pengekodan/xml menggunakan tag akhir untuk elemen dengan atribut dan tag elemen kosong untuk elemen tanpa atribut. Oleh kerana kedua-dua
Walaupun nampaknya lebih baik menggunakan tag elemen kosong untuk konsistensi, tiada perbezaan fungsi antara kedua-dua bentuk dari segi kesahihan XML. Kedua-dua kaedah menghasilkan dokumen XML setara yang mematuhi spesifikasi XML.
Oleh itu, tidak disyorkan untuk cuba memaksa pakej pengekodan/xml menggunakan tag elemen kosong untuk elemen dengan atribut. Sebaliknya, terima hakikat bahawa elemen ini akan dipaparkan dengan tag akhir, mengikut gelagat standard pakej.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Elemen XML Tanpa Teg Penutup dalam Pakej `pengekodan/xml` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!