Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menetapkan Nama Elemen XML Secara Dinamik Semasa Marshaling dalam Go?
Nama Elemen Dinamik dalam XML Marshaling
Dokumen XML selalunya mengandungi elemen dengan struktur yang serupa tetapi nama yang berbeza. Untuk mengendalikan perkara ini dalam Go, anda mungkin tertanya-tanya sama ada anda boleh mengubah suai nama elemen secara dinamik semasa penggabungan XML.
Definisi Struktur
Mari kita pertimbangkan dokumen XML berikut dengan dua elemen, "PERSON" dan "SENDER," mengandungi elemen yang sama dengan elemen yang berbeza names:
<PERSON> <ELEM1>...</ELEM1> <ELEM2>...</ELEM2> <ELEM3>...</ELEM3> <ELEM4>...</ELEM4> </PERSON> <SENDER> <ELEM1>...</ELEM1> <ELEM2>...</ELEM2> <ELEM3>...</ELEM3> <ELEM4>...</ELEM4> </SENDER>
Pada mulanya, anda mungkin cuba mentakrifkan struct seperti ini, di mana nama elemen ditetapkan secara statik:
type Person struct { XMLName string `xml:"PERSON"` // Static element name E1 string `xml:"ELEM1"` E2 string `xml:"ELEM2"` E3 string `xml:"ELEM3"` E4 string `xml:"ELEM4"` }
Nama Elemen Dinamik
Untuk menjadikan nama elemen dinamik, anda perlu menggunakan jenis xml.Name dan bukannya a rentetan:
type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` E2 string `xml:"ELEM2"` E3 string `xml:"ELEM3"` E4 string `xml:"ELEM4"` }
Kini, anda boleh menetapkan nama elemen secara dinamik menggunakan medan Setempat xml.Nama:
person := Person{ XMLName: xml.Name{Local: "Person"}, // ... Set other fields }
Ini membolehkan anda menjana nama elemen XML secara dinamik berdasarkan data khusus yang anda kumpulkan.
Contoh
Sebuah kerja contoh boleh didapati di Go Playground: http://play.golang.org/p/bzSutFF9Bo.
Dengan teknik ini, anda boleh mencipta struct yang mengendalikan elemen XML dengan nama yang berbeza-beza, memberikan fleksibiliti dan kebolehlanjutan dalam kod pengendalian XML anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Nama Elemen XML Secara Dinamik Semasa Marshaling dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!