如 XML:
<result>
<item value="1" flag="false" />
<item value="2" flag="true" />
<item value="3" />
</result>
解析后获得的 item 3的 flag 默认值为false, 如果要修改为true, 需要添加如下
type ResultItem struct {
Value string `xml:"value,attr"`
Flag bool `xml:"flag,attr"`
}
func (ri *ResultItem) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
type resultItem ResultItem // new type to prevent recursion
item := resultItem{
Flag: true,
}
if err := d.DecodeElement(&item, &start); err != nil {
return err
}
*ri = (ResultItem)(item)
return nil
}