首頁 > 後端開發 > Golang > 如何解析 Go XML 中的自訂 Time.Time 欄位?

如何解析 Go XML 中的自訂 Time.Time 欄位?

Patricia Arquette
發布: 2024-11-08 12:12:02
原創
951 人瀏覽過

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

Go 中Time.Time 欄位的自訂XML 解析

將XML 資料解組到Go 結構體時,您可能會遇到這樣的情況:日期欄位格式與預設time.Time 格式不同,導致解組錯誤。此問題深入研究了在解組過程中可用於指定自訂日期格式的選項。

問題源自於 time.Time 未實作 xml.Unmarshaler 接口,從而阻止您指定自訂日期格式。作為解決方案,您可以建立一個具有匿名 time.Time 欄位的包裝結構,並使用所需的日期格式實作您自己的 UnmarshalXML 方法。

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
}
登入後複製

此方法可讓您使用自訂日期格式解組 XML 文件同時保持類型安全。如果日期儲存為屬性,則可以透過實作 UnmarshalXMLAttr 來使用類似的方法。範例實作位於 http://play.golang.org/p/EFXZNsjE4a。

以上是如何解析 Go XML 中的自訂 Time.Time 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板