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
Patricia Arquetteasal
2024-11-20 11:44:04292semak imbas

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" />

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

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

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

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!

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