c++ 如何获取xml节点名字_Golang Gin 实战(十)| XML渲染

虽然当前基于XML的API应用不多,但是Gin也提供了便捷的XML生成,可以把这些用于需要XML的地方,比如网站的sitemap,rss订阅的atom等。

来个map试试

func main() {
    r := gin.Default()
    r.GET("/xml", func(c *gin.Context) {
        c.XML(200, gin.H{"wechat": "flysnow_org", "blog": "www.flysnow.org"})
    })
    r.Run(":8080")
}

在Gin中,要生成XML,只需要使用context.XML方法即可。以上的例子,我们运行访问浏览器http://localhost:8080/xml可以看到如下信息:

<map>
<wechat>flysnow_orgwechat>
<blog>www.flysnow.orgblog>
map>

根节点是map,这是因为gin.H其实就是一个mapmapkey成为了xml里的节点,而mapvalue成为了xml节点的值。

自定义struct

对于自定义的struct,Gin同样可以很方便的转为XML。

func main() {
    r := gin.Default()
    r.GET("/xml", func(c *gin.Context) {
        c.XML(200, User{ID: 123, Name: "张三", Age: 20})
    })
    r.Run(":8080")
}

type User struct {
    ID   int
    Name string
    Age  int
}

这个例子和 Golang Gin 实战(八)| JSON渲染输出 非常相似,现在我们运行再通过浏览器访问看看。

<User>
<ID>123ID>
<Name>张三Name>
<Age>20Age>
User>

根节点已经变成了这个structUser,而根节点下的节点,就是User的字段。

自定义节点名字

和JSON一样,我们也可以通过字段的xml tag来自定义对应的字段的别名。

type User struct {
    ID   int    `xml:"id"`
    Name string `xml:"name"`
    Age  int    `xml:"age"`
}

只需要改成这样,我们再打开浏览器访问,发现已经变了。

<User>
<id>123id>
<name>张三name>
<age>20age>
User>

已经变成我们重新定义好的别名了。Gin的xml生成,使用的是Golang内置的encoding/xml,所以可以像使用encoding/xml一样,来自定义我们的XML格式。

xml数组

XML的数组和JSON的不一样,因为XML必须要有一个根节点,所以我们必须要有一个对象存放我们的struct数组,比如map.

func main() {
    r := gin.Default()
    r.GET("/xml", func(c *gin.Context) {
        allUsers := []User{{ID: 123, Name: "张三", Age: 20}, {ID: 456, Name: "李四", Age: 25}}
        c.XML(200, gin.H{"user": allUsers})
    })
    r.Run(":8080")
}

type User struct {
    ID   int    `xml:"id"`
    Name string `xml:"name"`
    Age  int    `xml:"age"`
}

使用一个gin.H存放,keyuser,我们运行查看信息:

<map>
    123张三20
    456李四25
map>

已经是一个数组了。

小结

XML其实已经越来越不常用了,我们自己开发API,还是要用JSON的方式。不光XML不常用,其实Gin提供的YAML的支持更不常用,而且Gin提供的YAML的用法和XML、JSON基本一样,所以不再进行介绍,大家可以自己练练.

精彩文章推荐

Golang Gin 实战(九)| JSONP跨域和劫持

Golang Gin 实战(八)| JSON渲染输出

Golang Gin 实战(七)| 分组路由源代码分析

Golang Gin 实战(六)| 获取Form表单参数和原理分析

Golang Gin 实战(五)| 接收数组和map

Golang Gin 实战(四)| URL查询参数的获取和原理分析

Golang Gin 实战(三)| 路由参数

Golang Gin 实战(二)| 简便的Restful API 实现

Golang Gin 实战(一)| 快速安装入门

我有几个的Go语言交流微信群,可以扫码关注公众号flysnow_org或者网站 https://www.flysnow.org/,加我好友,我拉你进来。

f02a1c1c3f8e18a3fdc0822ca297a3ee.png
扫码关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值