From e09031b58cd3693f5e1071b979d8eea37dc4a684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=BF=E9=91=AB?= Date: Fri, 1 Nov 2019 23:21:25 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E5=BA=8F=E5=88=97=E5=8C=96=20xml=20?= =?UTF-8?q?=E6=97=B6=E6=B7=BB=E5=8A=A0=20cdata=20=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message/message.go | 24 ++++++++++++++++-------- message/text.go | 4 ++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/message/message.go b/message/message.go index 8c7ae2a..4e9b6d2 100644 --- a/message/message.go +++ b/message/message.go @@ -148,10 +148,10 @@ type MixMessage struct { UnionID string `xml:"UnionId"` // 内容审核相关 - IsRisky bool `xml:"isrisky"` - ExtraInfoJSON string `xml:"extra_info_json"` - TraceID string `xml:"trace_id"` - StatusCode int `xml:"status_code"` + IsRisky bool `xml:"isrisky"` + ExtraInfoJSON string `xml:"extra_info_json"` + TraceID string `xml:"trace_id"` + StatusCode int `xml:"status_code"` } //EventPic 发图事件推送 @@ -178,20 +178,28 @@ type ResponseEncryptedXMLMsg struct { // CommonToken 消息中通用的结构 type CommonToken struct { XMLName xml.Name `xml:"xml"` - ToUserName string `xml:"ToUserName"` - FromUserName string `xml:"FromUserName"` + ToUserName CDATA `xml:"ToUserName"` + FromUserName CDATA `xml:"FromUserName"` CreateTime int64 `xml:"CreateTime"` MsgType MsgType `xml:"MsgType"` } +type CDATA string + +func (c CDATA) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + return e.EncodeElement(struct { + string `xml:",cdata"` + }{string(c)}, start) +} + //SetToUserName set ToUserName func (msg *CommonToken) SetToUserName(toUserName string) { - msg.ToUserName = toUserName + msg.ToUserName = CDATA(toUserName) } //SetFromUserName set FromUserName func (msg *CommonToken) SetFromUserName(fromUserName string) { - msg.FromUserName = fromUserName + msg.FromUserName = CDATA(fromUserName) } //SetCreateTime set createTime diff --git a/message/text.go b/message/text.go index d981d96..88ac19a 100644 --- a/message/text.go +++ b/message/text.go @@ -3,12 +3,12 @@ package message //Text 文本消息 type Text struct { CommonToken - Content string `xml:"Content"` + Content CDATA `xml:"Content"` } //NewText 初始化文本消息 func NewText(content string) *Text { text := new(Text) - text.Content = content + text.Content = CDATA(content) return text } From bf456aa77b3e39b126bc96ace3daba026696da6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=BF=E9=91=AB?= Date: Fri, 8 Nov 2019 10:24:47 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=20CDATA=20?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message/message.go | 1 + 1 file changed, 1 insertion(+) diff --git a/message/message.go b/message/message.go index 4e9b6d2..a0b47a4 100644 --- a/message/message.go +++ b/message/message.go @@ -184,6 +184,7 @@ type CommonToken struct { MsgType MsgType `xml:"MsgType"` } +// CDATA 使用该类型,在序列化为 xml 文本时文本会被解析器忽略 type CDATA string func (c CDATA) MarshalXML(e *xml.Encoder, start xml.StartElement) error { From 1475417a648ca370d2ed3693264eabb60b011937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=BF=E9=91=AB?= Date: Fri, 8 Nov 2019 11:05:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=20CDATA.MarshalXM?= =?UTF-8?q?L=20=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message/message.go | 1 + 1 file changed, 1 insertion(+) diff --git a/message/message.go b/message/message.go index a0b47a4..cd4d4f9 100644 --- a/message/message.go +++ b/message/message.go @@ -187,6 +187,7 @@ type CommonToken struct { // CDATA 使用该类型,在序列化为 xml 文本时文本会被解析器忽略 type CDATA string +// MarshalXML 实现自己的序列化方法 func (c CDATA) MarshalXML(e *xml.Encoder, start xml.StartElement) error { return e.EncodeElement(struct { string `xml:",cdata"` From f6d07aa714048acd5e6371e69eecf816a412a66d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=81=BF=E9=91=AB?= Date: Fri, 8 Nov 2019 11:17:11 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20CDATA.MarshalXM?= =?UTF-8?q?L=20=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message/message.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message/message.go b/message/message.go index cd4d4f9..11f1535 100644 --- a/message/message.go +++ b/message/message.go @@ -187,7 +187,7 @@ type CommonToken struct { // CDATA 使用该类型,在序列化为 xml 文本时文本会被解析器忽略 type CDATA string -// MarshalXML 实现自己的序列化方法 +// MarshalXML 实现自己的序列化方法 func (c CDATA) MarshalXML(e *xml.Encoder, start xml.StartElement) error { return e.EncodeElement(struct { string `xml:",cdata"`