Open
Description
Hi! Thanks for the excellent tool.
I was using xsdgen
on this schema: https://www8.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd
This mostly worked, except for one field:
<xsd:element name="ScheduledOn" type="xsd:date" minOccurs="0" maxOccurs="unbounded"/>
The resulting struct has the correct type:
ScheduledOn []time.Time `xml:"http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 ScheduledOn,omitempty"`
but in the marshall/unmarshall functions, there's a type mismatch (cannot convert &layout.T.ScheduledOn (value of type *[]time.Time) to *xsdDate
)
func (t *Workoutt) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
type T Workoutt
var layout struct {
*T
ScheduledOn *xsdDate `xml:"http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 ScheduledOn,omitempty"`
}
layout.T = (*T)(t)
layout.ScheduledOn = (*xsdDate)(&layout.T.ScheduledOn)
return e.EncodeElement(layout, start)
}
func (t *Workoutt) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
type T Workoutt
var overlay struct {
*T
ScheduledOn *xsdDate `xml:"http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 ScheduledOn,omitempty"`
}
overlay.T = (*T)(t)
overlay.ScheduledOn = (*xsdDate)(&overlay.T.ScheduledOn)
return d.DecodeElement(&overlay, &start)
}