GO Lang 无法获取响应中的 XML 标头

问题描述 投票:0回答:1

我有一个 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 标头和命名空间??

mysql xml go unmarshalling
1个回答
0
投票

声明要使用中间件

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()

© www.soinside.com 2019 - 2024. All rights reserved.