サーチ…


備考

encoding/xmlパッケージの多くの用途には、Go structマーシャリングとアンマーシャリングが含まれていますが、これは直接マッピングではないことに注意してください。パッケージのドキュメントには、

XML要素とデータ構造の間のマッピングには、本質的に欠陥があります。XML要素は、匿名値の順序に依存するコレクションであり、データ構造は名前に依存しない値の順序に依存しないコレクションです。

シンプルで順序付けられていないキーと値のペアの場合、GobやJSONなどの別のエンコーディングを使用する方が適しています。順序付きデータまたはイベント/コールバック・ベースのデータ・ストリームの場合は、XMLが最良の選択である可能性があります。

ネストされた要素のデータによる基本的なデコード/アンマーシャリング

XML要素はしばしば入れ子になり、属性にデータを持ち、文字データとして持ちます。このデータを取得する方法は,chardataそれぞれ,attr,chardataを使用することです。

var doc = `
<parent>
  <child1 attr1="attribute one"/>
  <child2>and some cdata</child2>
</parent>
`

type parent struct {
    Child1 child1 `xml:"child1"`
    Child2 child2 `xml:"child2"`
}

type child1 struct {
    Attr1 string `xml:"attr1,attr"`
}

type child2 struct {
    Cdata1 string `xml:",cdata"`
}

func main() {
    var obj parent
    err := xml.Unmarshal([]byte(doc), &obj)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(obj.Child2.Cdata1)

}

Playground



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow