Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Marshal Peta ke XML dalam Go: Adakah Struct Satu-satunya Cara?

Bagaimana untuk Marshal Peta ke XML dalam Go: Adakah Struct Satu-satunya Cara?

Barbara Streisand
Barbara Streisandasal
2024-10-29 18:31:02313semak imbas

How to Marshal a Map to XML in Go: Is a Struct the Only Way?

Marshall Map to XML in Go

Menghadapi ralat semasa cuba menyusun peta kepada data XML? Lihat artikel ini untuk mendapatkan penyelesaian.

Penukaran JSON-ke-XML yang popular terkenal kerana menggunakan peta. Walau bagaimanapun, apabila ia datang kepada XML, perkara akan berubah. Anda mungkin tertanya-tanya mengapa peta tidak berkelakuan sama dalam kedua-dua situasi. Adakah benar bahawa menggunakan Struct adalah satu-satunya penyelesaian yang berdaya maju di sini?

Penyelesaian

Penyelesaian cemerlang ditemui menggunakan jenis xml.Marshaler . Begini cara ia berfungsi:

  1. Tentukan jenis StringMap: Cipta jenis tersuai untuk mewakili peta anda, digelar StringMap. Jenis ini akan mempunyai struktur asas [rentetan] peta.
  2. Laksanakan kaedah MarshalXML: StringMap harus melaksanakan kaedah MarshalXML antara muka xml.Marshaler. Kaedah ini menterjemah peta ke dalam XML.
  3. Ekodkan nilai peta: Gelung melalui pasangan nilai kunci peta, menjana xml.StartElement token untuk setiap kunci dan xml.CharData token untuk setiap nilai.
  4. Siram dan kembali: Untuk menulis token XML dan siram penimbal, gunakan EncodeToken dan Kaedah Flush.
Setelah anda mencipta jenis StringMap tersuai yang melaksanakan

xml.Marshaler, menyusun peta kepada XML adalah semudah:

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>
Kaedah ini menyediakan cara yang mudah untuk mengendalikan peta dalam XML marshalling, menghapuskan keperluan untuk menggunakan Structs.

Atas ialah kandungan terperinci Bagaimana untuk Marshal Peta ke XML dalam Go: Adakah Struct Satu-satunya Cara?. 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