Penghuraian XML Tersuai untuk Medan Masa.Masa dalam Go
Apabila menyahmarshaling data XML ke dalam struct Go, anda mungkin menghadapi situasi di mana format medan tarikh berbeza daripada masa lalai.Format masa, membawa kepada ralat unmarshaling. Soalan ini menyelidiki pilihan yang tersedia untuk menentukan format tarikh tersuai semasa proses unmarshaler.
Isu ini berpunca daripada fakta bahawa masa.Masa tidak melaksanakan antara muka xml.Unmarshaler, menghalang anda daripada menentukan tarikh tersuai format. Sebagai penyelesaian, anda boleh mencipta struktur pembalut dengan masa tanpa nama. Medan masa dan melaksanakan kaedah UnmarshalXML anda sendiri dengan format tarikh yang diingini.
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` // use your own type that satisfies UnmarshalXML //... } type customTime struct { time.Time } func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { const shortForm = "20060102" // yyyymmdd date format var v string d.DecodeElement(&v, &start) parse, err := time.Parse(shortForm, v) if err != nil { return err } *c = customTime{parse} return nil }
Pendekatan ini membolehkan anda menyahmarshal dokumen XML dengan format tarikh tersuai sambil mengekalkan keselamatan jenis. Jika tarikh disimpan sebagai atribut, pendekatan serupa boleh digunakan dengan melaksanakan UnmarshalXMLAttr sebaliknya. Contoh pelaksanaan boleh didapati di http://play.golang.org/p/EFXZNsjE4a.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Medan Masa Tersuai dalam Go XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!