>백엔드 개발 >Golang >최적화된 데이터 처리를 위해 XML을 Go 맵으로 직접 역마샬링하려면 어떻게 해야 합니까?

최적화된 데이터 처리를 위해 XML을 Go 맵으로 직접 역마샬링하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-05 16:21:111045검색

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

XML을 맵으로 직접 역마샬링

XML을 맵으로 직접 역마샬링하면 중간 구조체 변환을 제거하여 데이터 처리를 최적화할 수 있습니다. 단계.

구현:

이를 달성하려면 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
            }
        }
    }
}

사용법:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.