Go で不明な属性を持つ XML 属性をアンマーシャリングする
Go では、encoding/xml パッケージを使用して XML データをマーシャリングおよびアンマーシャリングできます。 Go データ構造から。ただし、デフォルトでは、事前にわかっている固定属性を持つ XML タグのアンマーシャリングのみがサポートされます。
XML の動的属性
場合によっては、XML ドキュメントにタグが含まれる場合があります。事前に知られていない動的属性を使用します。これにより、このような XML データを Go 構造体にアンマーシャリングするときに問題が生じる可能性があります。
動的属性のアンマーシャリング
2017 年後半の時点で、Go は、 xml:",any,attr" タグ ディレクティブ。このディレクティブは、すべての属性を xml.Attr スライスに収集するようにアンマーシャラーに指示します。
例:
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) }
上記のコードが実行されると、 print:
{ Attributes: [ {Name:ATTR1 Value:VALUE1} {Name:ATTR2 Value:VALUE2} ] }
注:
xml:",any,attr" ディレクティブは、ネストされたタグから属性を収集しません。ネストされたタグから属性を収集する必要がある場合は、カスタム XML デコーダを作成する必要があります。
以上がGo で不明な属性を持つ XML 属性をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。