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

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

Patricia Arquette
Patricia Arquette原創
2024-11-20 11:44:04225瀏覽

How Can I Unmarshal XML with Dynamic Attributes in Go?

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

在 Go 中,使用動態屬性解組 XML 可能是一個挑戰。然而,隨著最近問題 3633 的解決,現在有一個簡單有效的方法來處理這種情況。

問題:未知屬性

傳統上,在 Go 中解組 XML 時,您會定義具有特定欄位的結構以符合預期的 XML 元素。但是,當您遇到帶有無法預測屬性的 XML 標籤時會發生什麼?

解決方案:「,any,attr」標籤

解決方案在於使用「,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中文網其他相關文章!

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