문제:
XML을 구조체로 역마샬링한 다음 맵으로 변환 대규모 데이터 세트의 경우 시간이 많이 걸립니다. 지도로 직접 비정렬화하는 방법이 있나요?
XML:
<classAccesses> <apexClass>AccountRelationUtility</apexClass> <enabled>true</enabled> </classAccesses>
현재 구조체:
type classAccesses struct { ApexClass string `xml:"apexClass"` Enabled string `xml:"enabled"` } type diffs struct { ClassAccesses []classAccesses `xml:"classAccesses"` }
원함 맵:
map[string]string { "ApexClass": "enabled" }
해결책:
xml.Unmarshaller 인터페이스를 구현하여 데이터를 맵[문자열]문자열로 직접 마샬링합니다.
type classAccessesMap struct { m map[string]string } func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { c.m = map[string]string{} key := "" val := "" for { t, _ := d.Token() switch tt := t.(type) { // 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 } } } }
일부 해결 방법:
부분 구현을 보려면 https://play.golang.org/p/7aOQ5mcH6zQ를 방문하세요.
위 내용은 성능 향상을 위해 XML을 Go 맵으로 직접 비정렬할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!