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 := `` 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 或更高版本。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3