目前在用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类型??
类似这么定义:
```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
搞错了,代码我截图
![QQ图片20180107162120.png](https://static.studygolang.com/180107/c74ef89f55c13796967ee9425d5ba7de.png)
结果是`{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}`
#3