Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menetapkan Nama Elemen XML Secara Dinamik Semasa Marshaling dalam Go?

Bagaimanakah Saya Boleh Menetapkan Nama Elemen XML Secara Dinamik Semasa Marshaling dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-02 08:41:13339semak imbas

How Can I Dynamically Set XML Element Names During Marshaling in 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!

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