我来自 Python 背景,这是我第一次正式涉足 Go,所以我认为事情还没有开始。
我目前正在 Go 中实现 Affiliate Window XML API。API 遵循请求和响应的标准结构,因此为此我试图保持干燥。信封始终具有相同的结构,如下所示:
<Envelope>
<Header></Header>
<Body></Body>
</Envelope>
内容Header和Body依据是什么,我请求,将是不同的反应,所以我创建了一个基地Envelope struct
type Envelope struct {
XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Envelope"`
NS1 string `xml:"xmlns:ns1,attr"`
XSD string `xml:"xmlns:xsd,attr"`
Header interface{} `xml:"http://schemas.xmlsoap.org/soap/envelope/ Header"`
Body interface{} `xml:"Body"`
}
这适用于为请求编组 XML,但我在解组时遇到问题:
func NewResponseEnvelope(body interface{}) *Envelope {
envelope := NewEnvelope()
envelope.Header = &ResponseHeader{}
envelope.Body = body
return envelope
}
func main() {
responseBody := &GetMerchantListResponseBody{}
responseEnvelope := NewResponseEnvelope(responseBody)
b := bytes.NewBufferString(response)
xml.NewDecoder(b).Decode(responseEnvelope)
fmt.Println(responseEnvelope.Header.Quota) // Why can't I access this?
}
这个http://play.golang.org/p/v-MkfEyFPM在代码中可能比我用文字更好地描述了这个问题:p
动漫人物
相关分类