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中文網其他相關文章!