Skip to content

Issue with type="xsd:date" maxOccurs="unbounded" #128

Open
@eveninglily

Description

@eveninglily

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)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions