Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menyahmarshal XML dengan Atribut Dinamik dalam Go?

Bagaimanakah Saya Boleh Menyahmarshal XML dengan Atribut Dinamik dalam Go?

Patricia Arquette
Lepaskan: 2024-11-20 11:44:04
asal
277 orang telah melayarinya

How Can I Unmarshal XML with Dynamic Attributes in Go?

Menyahmarshall XML dengan Atribut Dinamik dalam Go

Dalam Go, membuang XML dengan atribut dinamik boleh menjadi satu cabaran. Walau bagaimanapun, dengan penyelesaian Isu 3633 baru-baru ini, kini terdapat cara yang mudah dan cekap untuk menangani situasi ini.

Isu: Atribut Tidak Diketahui

Secara tradisinya, apabila menyahmarshaling XML dalam Go, anda akan tentukan struct dengan medan khusus untuk memadankan elemen XML yang dijangkakan. Walau bagaimanapun, apakah yang berlaku apabila anda menemui teg XML dengan atribut yang tidak dapat anda ramalkan?

Penyelesaian: Teg ",any,attr"

Penyelesaian terletak pada penggunaan ",any,attr" " teg dalam definisi struct Go anda. Teg ini mengarahkan XML unmarshaler untuk mengumpulkan semua atribut elemen yang ditentukan ke dalam sekeping xml.Attr struct.

Contoh

Pertimbangkan coretan XML berikut:

<TAG ATTR1="VALUE1" ATTR2="VALUE2" />
Salin selepas log masuk

Untuk menyahmarshal XML ini ke dalam struct Go, anda boleh menggunakan yang berikut kod:

package main

import (
    "encoding/xml"
    "fmt"
)

func main() {
    var v struct {
        Attributes []xml.Attr `xml:",any,attr"`
    }

    data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />`

    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        panic(err)
    }
    fmt.Println(v)
}
Salin selepas log masuk

Apabila anda menjalankan kod ini, struktur v akan diisi dengan data berikut:

{[]xml.Attr{
    {Name: {Local: "ATTR1"}, Value: "VALUE1"},
    {Name: {Local: "ATTR2"}, Value: "VALUE2"},
}}
Salin selepas log masuk

Kepingan Atribut mengandungi dua struktur xml.Attr, setiap satu mewakili satu daripada atribut daripada teg XML.

Kesimpulan

",any,attr" teg menyediakan cara yang berkuasa dan fleksibel untuk menyahmarshal teg XML dengan atribut dinamik dalam Go. Dengan menggunakan ciri ini, anda boleh mengendalikan struktur XML yang tidak dapat diramalkan dengan mudah dan mengekstrak data yang anda perlukan ke dalam struktur tersuai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal XML dengan Atribut 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