time.Time フィールドを使用した Go でのカスタム XML 日付解析
Golang は、XML データをカスタム構造体にアンマーシャリングする柔軟性を提供しますが、 XML をアンマーシャリングするときに、time.Time フィールドのカスタム日付形式の指定はサポートされません。これにより、返された日付形式がデフォルトの Go 形式と異なる場合に解析エラーが発生する可能性があります。
CustomUnmarshaler Solution
この制限を克服するには、次のカスタム構造体を作成します。匿名の time.Time フィールドを使用して、独自の UnmarshalXML メソッドを実装します。このメソッドは、カスタム形式を使用して日付文字列を解析し、それに応じて time.Time フィールドを設定します。
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 }
カスタム構造体の組み込み
トランザクション構造体を次のように更新します。カスタム時間フィールドを含めます:
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` //... }
XML アンマーシャリングでは、customTime 構造体が使用され、定義された形式に従って日付文字列が解析されます。
追加メモ
XML 要素で日付の属性が使用されている場合は、同じ方法で UnmarshalXMLAttr を実装する必要があります。ガイダンスとして、提供されているコード スニペットの例を参照してください。
以上がXML をアンマーシャリングするときに Go で time.Time フィールドの日付解析をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。