親からの属性を使用して子XMLを動的に非整列化するにはどうすればよいですか?親からの属性を持つ子XMLを動的に非整列化
我々は、次のXMLSあります
<!-- Report I -->
<report type="YYYY-MM-DD">
<created_at>2016-01-01</created_at>
</report>
<!-- Report II -->
<report type="DD-MM-YYYY">
<created_at>01-01-2016</created_at>
</report>
をそして、我々は、以下の構造:
type Report struct {
XMLName xml.Name `xml:"report"`
Type string `xml:"type,attr"`
CreatedAt *ReportDate `xml:"created_at"`
}
type ReportDate struct {
time.Time
}
func (c *ReportDate) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
const format = "02-01-2006" // or "2016-01-02" depending on parent's "type"
var v string
d.DecodeElement(&v, &start)
parse, err := time.Parse(format, v)
if err != nil {
return err
}
*c = ReportDate{parse}
return nil
}
それがUnmarshalXML
に親からtype="?"
を得ることがReportDate
可能でしょうか?または、Report
が属性値をすべての子タグに渡すことは可能でしょうか?可能であれば、どうやってこれを達成するのですか?
ニース:)のコードは次のようになります!レポートに「素晴らしいレポート 」などの要素がある場合は、どのように 'UnmarshalXML'でそれらを渡しますか? –
私の他の答えを見てください。 –