Go で不明な属性を持つ XML 属性をアンマーシャリングする方法

DDD
リリース: 2024-11-25 02:30:10
オリジナル
135 人が閲覧しました

How to Unmarshal XML Attributes with Unknown Attributes in Go?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート