Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menjana Elemen XML Tanpa Teg Penutup dalam Pakej `pengekodan/xml` Go?

Bagaimana untuk Menjana Elemen XML Tanpa Teg Penutup dalam Pakej `pengekodan/xml` Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-20 04:09:02682semak imbas

How to Generate XML Elements Without Closing Tags in Go's `encoding/xml` Package?

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 dan :

<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., ) atau elemen dengan tag hujung (cth., ) . Pilihan antara dua bentuk ini dikawal oleh pakej pengekodan/xml.

Menurut dokumentasi, pakej pengekodan/xml menggunakan tag akhir untuk elemen dengan atribut dan tag elemen kosong untuk elemen tanpa atribut. Oleh kerana kedua-dua dan mempunyai atribut, ia akan sentiasa dipaparkan dengan tag akhir.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn