ホームページ >バックエンド開発 >Golang >最適化されたデータ処理のために XML を Go マップに直接アンマーシャリングするにはどうすればよいですか?

最適化されたデータ処理のために XML を Go マップに直接アンマーシャリングするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-05 16:21:111048ブラウズ

How Can I Directly Unmarshal XML into a Go Map for Optimized Data Processing?

XML をマップに直接アンマーシャリングする

XML をマップに直接アンマーシャリングすると、中間の構造体変換を排除してデータ処理を最適化できます。 step.

実装:

これを実現するには、xml.Unmarshaller インターフェイスを実装する型を作成し、XML データを XML データに直接マッピングできるようにします。 map[string]string.

type classAccessesMap struct {
    m map[string]string
}

// UnmarshalXML implements the xml.Unmarshaller interface
func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    c.m = make(map[string]string)

    var key, val string

    for {
        t, _ := d.Token()
        switch tt := t.(type) {

            // TODO: parse the inner structure

        case xml.StartElement:
            fmt.Println(">", tt)

        case xml.EndElement:
            fmt.Println("<", tt)
            if tt.Name == start.Name {
                return nil
            }

            if tt.Name.Local == "enabled" {
                c.m[key] = val
            }
        }
    }
}

使用法:

カスタム タイプをアンマーシャル操作に適用して、XML データをマップに直接マッピングします:

// Unmarshalling into a map
var cm classAccessesMap
err := xml.Unmarshal([]byte(`<classAccesses>\n    <apexClass>AccountRelationUtility</apexClass>\n    <enabled>true</enabled>\n</classAccesses>`), &cm)
if err != nil {
    fmt.Println(err)
}

このアプローチは、二重変換のオーバーヘッドを回避することでデータ処理を合理化し、その結果、大規模なデータのパフォーマンスが向上します。セットします。

以上が最適化されたデータ処理のために XML を Go マップに直接アンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。