目前在用go开发一个微信公众号,所以碰到xml转换的问题,类似< ![CDATA[toUser] ]>< ![CDATA[FromUser] ]>123456789< ![CDATA[event] ]>< ![CDATA[subscribe] ]>这种的微信推送过来的xml数据,要怎么转换为struct类型??
< ![CDATA[toUser] ]>< ![CDATA[FromUser] ]>123456789< ![CDATA[event] ]>< ![CDATA[subscribe] ]>
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
类似这么定义:
type CData struct { Val string `xml:",cdata"` }
可以参考 studygolang 的相关代码:https://github.com/studygolang/studygolang/blob/master/src/model/wechat_msg.go
类似这么定义: ```go type CData struct { Val string `xml:",cdata"` } ``` 可以参考 studygolang 的相关代码:https://github.com/studygolang/studygolang/blob/master/src/model/wechat_msg.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 = "< ![CDATA[toUser] ]>< ![CDATA[FromUser] ]>123456789< ![CDATA[event] ]>< ![CDATA[subscribe] ]>" xml.Unmarshal([]byte(xmlString), &event) fmt.Println(event) }
打印结果是这样的:{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}
{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}
搞错了,代码我截图
结果是{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}
目测是因为你的 xml 格式不对,CDATA 前后多了空格吧,应该是这样的:
<![CDATA[ ... ]]>
目测是因为你的 xml 格式不对,CDATA 前后多了空格吧,应该是这样的: ``
不是这个原因啊,而且这个xml格式我是直接复制微信平台的示例的
刚好在张子阳的博客看到相关的内容,贴出来供您参考 原文链接在这里http://www.tracefact.net/tech/045.html
你那符合xml格式吗?怎么看也不是啊。
@czyt 谢谢,已经解决了
@jiang091308111 已经解决了,谢谢
你可能需要的是这个
https://github.com/goctx/wechat
golang微信公众平台开发
`单行代码`
类似这么定义:
可以参考 studygolang 的相关代码:https://github.com/studygolang/studygolang/blob/master/src/model/wechat_msg.go
我刚试了不行啊 这是代码
打印结果是这样的:
{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}
搞错了,代码我截图
结果是
{{ xml} 0xc042030300 <nil> 0 <nil> <nil>}
目测是因为你的 xml 格式不对,CDATA 前后多了空格吧,应该是这样的:
<![CDATA[ ... ]]>
不是这个原因啊,而且这个xml格式我是直接复制微信平台的示例的
刚好在张子阳的博客看到相关的内容,贴出来供您参考
原文链接在这里http://www.tracefact.net/tech/045.html
你那符合xml格式吗?怎么看也不是啊。
@czyt 谢谢,已经解决了
@jiang091308111 已经解决了,谢谢
你可能需要的是这个
https://github.com/goctx/wechat
golang微信公众平台开发