Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-10-29 18:31:02
asal
346 orang telah melayarinya

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>
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan