我有一个 xml 存储在数据库中,我使用 GO 中的 xml.unmarshall 和我定义的结构对其进行解组。 获取 API 响应时,我没有获取 XML 标头和命名空间。
type Entity struct {
XMLName xml.Name `xml:"entity" json:"-"`
etc..
}
发送回复时
func get(c *gin.Context) {
...
entity=new(model.Entity)
offeredContentTypes := []string{"application/xml", "application/json"}
c.Negotiate(http.StatusOK, gin.Negotiate{
Offered: offeredContentTypes,
XMLData: entity,
JSONData: entity,
})
}
我在数据库中的 xml 实体具有所需的标头和命名空间
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><entity xmlns:ns2="http://abc/xyz">....</entity>
这就是我得到的回复类型
<entity>...</entity>
如何解决这个问题,以便我同时获得 xml 标头和命名空间??
声明要使用中间件
router := gin.Default()
router.Use(XMLHeadergo())
这是中间件代码
func XMLHeadergo() gin.HandlerFunc {
return func(c *gin.Context) {
if c.NegotiateFormat(gin.MIMEXML) == gin.MIMEXML {
c.Writer.Write([]byte(xml.Header))
}
c.Next()
}
}
这个前置
<?xml version="1.0" encoding="UTF-8"?>
每个响应(如果它们是 xml 格式)
我确保使用gin的上下文函数输出xml
c.XML()