Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyahmarshalkan Elemen XML dengan Atribut dan Nilai Titik Terapung ke dalam Go Structs?

Bagaimana untuk Menyahmarshalkan Elemen XML dengan Atribut dan Nilai Titik Terapung ke dalam Go Structs?

Susan Sarandon
Susan Sarandonasal
2024-10-24 02:40:29869semak imbas

How to Unmarshal XML Elements with Attributes and Floating-Point Values into Go Structs?

Menyahmarshaling Elemen XML ke dalam struktur Go

Pertimbangkan elemen XML berikut, yang termasuk atribut dan nilai titik terapung:

<thing prop="1">
  1.23
</thing>
<thing prop="2">
  4.56
</thing>

Untuk menyahmarshal XML ini menjadi struct Go, dua pendekatan reka bentuk boleh digunakan:

Dengan Harta Nama XML:

<code class="go">type ThingElem struct {
    XMLName xml.Name `xml:"thing"`
    Prop    int      `xml:"prop,attr"`
    Value   float64 // ???
}</code>

Dalam kes ini , medan XMLName digunakan untuk menentukan bahawa struct mewakili elemen XML "benda". Walau bagaimanapun, ia tidak semestinya perlu untuk memasukkan medan ini dalam definisi struct.

Tanpa XMLName Property:

<code class="go">type ThingElem struct {
    Prop  int   `xml:"prop,attr"`
    Value float64 // ???
}

type ThingWrapper struct {
    T ThingElem `xml:"thing"`
}</code>

Dalam pendekatan ini, struct ThingElem tidak dikawal dalam struktur pembungkus ThingWrapper. Teg xml:"benda" pada struct pembungkus menetapkan bahawa ThingElem harus mewakili elemen XML "benda".

Menentukan Jenis Medan Nilai:

Apabila mentakrifkan Medan nilai, adalah penting untuk ambil perhatian bahawa elemen XML mengandungi data aksara (kandungan teks) yang mewakili nilai titik terapung. Untuk menyahmarshal ini dengan betul, perubahan berikut mesti dibuat:

Alih Keluar Ruang daripada Nilai:

Data XML mengandungi ruang dalam nilai titik terapung. Ruang ini mesti dialih keluar sebelum menyahmarshall.

Gunakan ",chardata" Anotasi:

Kandungan teg XML boleh dirujuk menggunakan anotasi ",chardata" dalam takrifan medan struct:

<code class="go">Value float64 `xml:",chardata"`</code>

Dengan menggabungkan pengubahsuaian ini dan memastikan bahawa data XML dipangkas daripada ruang, anda boleh berjaya menyahmarshal XML yang diberikan ke dalam struct Go menggunakan salah satu pendekatan reka bentuk yang dinyatakan di atas.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshalkan Elemen XML dengan Atribut dan Nilai Titik Terapung ke dalam Go Structs?. 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