func (v Values) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { for { t, err := d.Token() if err != nil { if err == io.EOF { return nil } return err } if s, ok := t.(xml.StartElement); ok { t, err = d.Token() if err != nil { return err } key := s.Name.Local var val string if c, ok := t.(xml.CharData); ok { val = string(c) } v[key] = append(v[key], val) } } }
func (r *Response) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { stype := r.Type(start) if stype != "ArrayOfDataObject" { v := Values{} if err := d.DecodeElement(&v, &start); err != nil { return err } r.Values = append(r.Values, v) return nil } for { t, err := d.Token() if err != nil { if err == io.EOF { return nil } return err } if s, ok := t.(xml.StartElement); ok { if s.Name.Local == "DataObject" { v := Values{} if err := d.DecodeElement(&v, &s); err != nil { return err } r.Values = append(r.Values, v) } } } }