在 Go 中,使用動態屬性解組 XML 可能是一個挑戰。然而,隨著最近問題 3633 的解決,現在有一個簡單有效的方法來處理這種情況。
傳統上,在 Go 中解組 XML 時,您會定義具有特定欄位的結構以符合預期的 XML 元素。但是,當您遇到帶有無法預測屬性的 XML 標籤時會發生什麼?
解決方案在於使用「,any,attr」 Go 結構定義中的「標記。此標記指示XML 解組器將指定元素的所有屬性收集到xml.Attr 結構的切片中。片段:
要將這個XML 解組到Go 結構中,您可以使用以下指令程式碼:<TAG ATTR1="VALUE1" ATTR2="VALUE2" />執行此程式碼時,v 結構會填入下列資料:
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) }Attributes 切片包含兩個xml.Attr 結構,每個代表一個XML標籤中的屬性。功能,您可以輕鬆處理不可預測的XML 結構並將所需的資料提取到自訂結構中。
以上是如何在 Go 中使用動態屬性解組 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!