// Package parse_body ... // // Description : parse_body ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2024-10-22 16:42 package parse_body import ( "bytes" "git.zhangdeman.cn/zhangdeman/consts" "git.zhangdeman.cn/zhangdeman/serialize" "github.com/gin-gonic/gin" "github.com/sbabiv/xml2map" ) type XmlAdaptor struct { base } func (x XmlAdaptor) Parse(ctx *gin.Context, receiver any) ([]byte, error) { unmarshalFunc := x.Unmarshal() if nil == unmarshalFunc { unmarshalFunc = serialize.Xml.UnmarshalWithNumber } return x.DoParse(ctx, receiver, unmarshalFunc) } func (x XmlAdaptor) Unmarshal() func(sourceData []byte, receiver any) error { return func(sourceData []byte, receiver any) error { res, err := xml2map.NewDecoder(bytes.NewReader(sourceData)).Decode() if nil != err { return err } return serialize.JSON.Transition(res, receiver) } } func (x XmlAdaptor) ContentType() string { return consts.MimeTypeXml }