문제:
처음이 아닌 지도로 XML 데이터를 비정렬화해야 합니다. 구조체로 정렬 해제한 다음 구조체를 맵으로 변환하는 데 시간이 너무 많이 걸립니다. 대규모 데이터 세트.
<classAccesses> <apexClass>AccountRelationUtility</apexClass> <enabled>true</enabled> </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) { // TODO: ... 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.Unmarshal 함수를 사용하여 XML 데이터를 사용자 정의 유형으로 직접 구문 분석합니다.
var classAccesses classAccessesMap if err := xml.Unmarshal(data, &classAccesses); err != nil { // Handle error } fmt.Println(classAccesses.m)
위 내용은 XML을 Go 맵으로 직접 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!