首頁 >後端開發 >Golang >如何在 Go 中使用動態屬性解組 XML?

如何在 Go 中使用動態屬性解組 XML?

Susan Sarandon
Susan Sarandon原創
2024-11-19 03:33:021031瀏覽

How to Unmarshal XML with Dynamic Attributes in Go?

Golang:使用動態屬性解組XML

簡介:
在Go 中,encoding/xml提供了處理XML 資料的高效且通用的方法。然而,在處理具有動態屬性的 XML 元素時,由於存在未知數量和類型的屬性,解組變得具有挑戰性。

問題:
如何使用以下方法解組 XML 標籤當你沒有預料到確切的屬性時,Go 中的動態屬性遇到過嗎?

答案:
在 2017 年底之前,Go 的 XML 解組不直接支援這一點。然而,隨著encoding/xml套件的進步,這個功能已經實現了。

要解組具有動態屬性的XML標籤,您可以使用以下語法:

type MyStruct struct {
    Attributes []xml.Attr `xml:",any,attr"`
}

這裡有一個範例來說明它是如何運作的:

package main

import (
    "encoding/xml"
    "fmt"
)

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

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

    var v MyStruct

    if err := xml.Unmarshal([]byte(data), &v); err != nil {
        panic(err)
    }

    fmt.Println(v.Attributes)
}

在此範例中,MyStruct 類型定義了一個名為Attributes 的欄位。 xml:"...,any,attr" 標籤指示解組器將任何 XML 屬性作為 xml.Attr 切片指派給該欄位。

當解組器遇到 data 變數中提供的 XML 資料時,它會成功將未知屬性(ATTR1 和 ATTR2)解組到 v 結構的 Attributes 欄位中。這允許動態處理具有不同屬性集的 XML 元素。

請注意,此功能需要 Go 版本 1.9 或更高版本。

以上是如何在 Go 中使用動態屬性解組 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn