>  기사  >  백엔드 개발  >  Go XML에서 사용자 정의 Time.Time 필드를 구문 분석하는 방법은 무엇입니까?

Go XML에서 사용자 정의 Time.Time 필드를 구문 분석하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-08 12:12:02943검색

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으로 문의하세요.