首頁 >後端開發 >Golang >如何直接將XML解組到Go Map中以優化資料處理?

如何直接將XML解組到Go Map中以優化資料處理?

Patricia Arquette
Patricia Arquette原創
2024-12-05 16:21:111040瀏覽

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

直接將 XML 解組到 Map

將 XML 直接解組到 Map可以透過消除中間結構轉換來最佳化資料處理

實作:

要實現此目的,請建立一個實作 xml.Unmarshaller 介面的類型,允許將 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
            }
        }
    }
}

用法:

將自訂類型套用於unmarshal 操作,直接將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 Map中以優化資料處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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