type Rewards struct {
	XMLName xml.Name `xml:"rewards"`
	Rewards []Reward `xml:"reward"`
}
type Reward struct {
	Value string
	Attrs map[string]string
}
func (r *Reward) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
	r.Attrs = make(map[string]string)
	for _, attr := range start.Attr {
		r.Attrs[attr.Name.Local] = attr.Value
	}
	if err := d.DecodeElement(&r.Value, &start); err != nil {
		return err
	}
	return nil
}
// ...
var obj Rewards
if err := xml.Unmarshal(data, &obj); err != nil {
	log.Fatal(err)
}
log.Printf("%+v", obj.Rewards)
[{Value:100 Attrs:map[type:money slot:101 repeated:1]} {Value:1 Attrs:map[bagId:1 repeated:1 type:freedomBagsExp]} {Value:30 Attrs:map[repeated:1 type:rating]} {Value:1 Attrs:map[repeated:1 type:key key_id:2]} {Value:30 Attrs:map[type:guildAP repeated:1]} {Value:2 Attrs:map[key_id:2 repeated:1 type:key]} {Value:476 Attrs:map[repeated:1 type:rating]}]