Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya Boleh Elemen XML Marshal dengan Nama Dinamik dalam Go?

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

Barbara Streisand
Barbara Streisandasal
2024-11-22 18:13:13632semak imbas

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"`
    // ...
}

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))
}

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!

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