Bagaimanakah saya Boleh Elemen XML Marshal dengan Nama Dinamik dalam Go?

Barbara Streisand
Lepaskan: 2024-11-22 18:13:13
asal
629 orang telah melayarinya

How Can I Marshal XML Elements with Dynamic Names in Go?

Marshaling Elemen XML dengan Nama Dinamik dalam Golang

Tugas membina dokumen XML daripada struktur Go boleh menimbulkan cabaran, terutamanya apabila berurusan dengan nama unsur yang berbeza-beza. Timbul persoalan: bolehkah kita mentakrifkan struct Go yang membenarkan nama elemen dinamik semasa proses marshaling XML?

XMLName and Dynamic Element Names

Dokumentasi Go menyatakan bahawa medan XMLName dalam struct mestilah jenis xml.Name, bukan rentetan. Struktur ini mengandungi dua medan: "Ruang" dan "Tempatan." Untuk menetapkan nama elemen dinamik, ubah suai medan "Tempatan" dalam xml.Jenis nama.

type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    // ...
}
Salin selepas log masuk

Contoh

Dalam contoh ini, kita' akan mempunyai struct dengan nama elemen ialah "Orang" atau "Penghantar" berdasarkan nilai yang disimpan dalam XMLName.Local medan.

import (
    "encoding/xml"
    "fmt"
)

type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    // ...
}

func main() {
    person := Person{XMLName: xml.Name{Local: "Person"}, E1: "Value1"}
    sender := Person{XMLName: xml.Name{Local: "Sender"}, E1: "Value1"}

    // Marshal the struct into XML
    personXML, _ := xml.Marshal(person)
    senderXML, _ := xml.Marshal(sender)

    fmt.Println(string(personXML))
    fmt.Println(string(senderXML))
}
Salin selepas log masuk

Contoh ini menghasilkan dua dokumen XML yang berbeza, satu dengan nama elemen "Orang" dan satu lagi dengan nama elemen "Penghantar."

Contoh Taman Permainan< ;/h3>

Untuk versi interaktif contoh ini, lawati Go Playground: http://play.golang.org/p/bzSutFF9Bo

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Elemen XML Marshal dengan Nama Dinamik dalam Go?. 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