Open xyy11070 opened 5 years ago
I fixed this bug, for anyone who are bothered by this problem, here is the code, it's actually very simple:
func XmlToMap(xmlStr string) Params {
params := make(Params)
decoder := xml.NewDecoder(strings.NewReader(xmlStr))
var (
key string
value string
)
inBetween := false
for t, err := decoder.Token(); err == nil; t, err = decoder.Token() {
switch token := t.(type) {
case xml.StartElement:
key = token.Name.Local
if key == "xml" {
continue
}
inBetween = true
case xml.CharData:
if !inBetween {
continue
}
value = string([]byte(token))
params[key] = value
case xml.EndElement:
inBetween = false
}
}
return params
}