Maison >développement back-end >Golang >Comment extraire directement du XML dans une Go Map ?
Problème :
Vous devez d'abord désorganiser les données XML dans une carte désorganiser en une structure puis convertir la structure en une carte, ce qui prend trop de temps pour un grand ensemble de données.
<classAccesses> <apexClass>AccountRelationUtility</apexClass> <enabled>true</enabled> </classAccesses>
Carte souhaitée :
map[string]string{ "ApexClass": "enabled" }
Solution :
Implémenter l'interface xml.Unmarshaller pour un type personnalisé qui représente la structure de carte souhaitée :
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 } } } }
Ensuite, utilisez la fonction xml.Unmarshal pour analyser les données XML directement dans le type personnalisé :
var classAccesses classAccessesMap if err := xml.Unmarshal(data, &classAccesses); err != nil { // Handle error } fmt.Println(classAccesses.m)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!