目前在用go开发一个微信公众号,所以碰到xml转换的问题,类似`<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event></xml>`这种的微信推送过来的xml数据,要怎么转换为struct类型??
刚好在张子阳的博客看到相关的内容,贴出来供您参考
![QQ截图20180114121039.jpg](https://static.studygolang.com/180114/d74972b1ee8e5fc950d925002da56031.jpg)
原文链接在这里http://www.tracefact.net/tech/045.html
#6
更多评论
类似这么定义:
```go
type CData struct {
Val string `xml:",cdata"`
}
```
可以参考 studygolang 的相关代码:https://github.com/studygolang/studygolang/blob/master/src/model/wechat_msg.go
#1
我刚试了不行啊
这是代码
```go
type CData struct {
Val string `xml:",cdata"`
}
type EventPush struct {
XMLName xml.Name `xml:"xml"`
ToUserName *CData
FromUserName *CData
CreateTime uint64
MsgType *CData
Event *CData
}
func main() {
var event EventPush
var xmlString = "<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event></xml>"
xml.Unmarshal([]byte(xmlString), &event)
fmt.Println(event)
}```
打印结果是这样的:`{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}`
#2