Problème :
Désassembler du XML dans une structure puis le convertir en une carte prend du temps pour les grands ensembles de données. Existe-t-il un moyen de désorganiser directement dans une carte ?
XML :
<classAccesses> <apexClass>AccountRelationUtility</apexClass> <enabled>true</enabled> </classAccesses>
Struct actuel :
type classAccesses struct { ApexClass string `xml:"apexClass"` Enabled string `xml:"enabled"` } type diffs struct { ClassAccesses []classAccesses `xml:"classAccesses"` }
Désiré Map :
map[string]string { "ApexClass": "enabled" }
Solution :
Implémentez l'interface xml.Unmarshaller pour rassembler les données directement dans une chaîne map[string].
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 } } } }
Solution partielle :
Visitez https://play.golang.org/p/7aOQ5mcH6zQ pour une implémentation partielle.
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!