Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghuraikan Medan Masa Tersuai dalam Go XML?

Bagaimana untuk Menghuraikan Medan Masa Tersuai dalam Go XML?

Patricia Arquette
Patricia Arquetteasal
2024-11-08 12:12:02944semak imbas

How to Parse Custom Time.Time Fields in Go XML?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn