首页  >  文章  >  后端开发  >  如何解析 Go XML 中的自定义 Time.Time 字段?

如何解析 Go XML 中的自定义 Time.Time 字段?

Patricia Arquette
Patricia Arquette原创
2024-11-08 12:12:02944浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn