From 556085997da3250a484cd898f62c5e4e10bea88c Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Fri, 28 Dec 2018 21:43:57 +0800 Subject: [PATCH] =?UTF-8?q?#899=20WxCpXmlMessage=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AD=98=E6=94=BExml=E6=B6=88=E6=81=AF=E7=9A=84=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=B1=9E=E6=80=A7=E5=80=BC=E7=9A=84allFieldsMap?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/cp/bean/WxCpXmlMessage.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java index 3fc2137f..90d67b07 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java @@ -6,6 +6,7 @@ import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; +import java.util.Map; import org.apache.commons.io.IOUtils; @@ -14,6 +15,7 @@ import com.thoughtworks.xstream.annotations.XStreamConverter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.util.XmlUtils; import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; import me.chanjar.weixin.cp.config.WxCpConfigStorage; import me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil; @@ -36,6 +38,11 @@ import me.chanjar.weixin.cp.util.xml.XStreamTransformer; public class WxCpXmlMessage implements Serializable { private static final long serialVersionUID = -1042994982179476410L; + /** + * 使用dom4j解析的存放所有xml属性和值的map. + */ + private Map allFieldsMap; + /////////////////////// // 以下都是微信推送过来的消息的xml的element所对应的属性 /////////////////////// @@ -349,7 +356,9 @@ public class WxCpXmlMessage implements Serializable { protected static WxCpXmlMessage fromXml(String xml) { //修改微信变态的消息内容格式,方便解析 xml = xml.replace("", ""); - return XStreamTransformer.fromXml(WxCpXmlMessage.class, xml); + final WxCpXmlMessage xmlMessage = XStreamTransformer.fromXml(WxCpXmlMessage.class, xml); + xmlMessage.setAllFieldsMap(XmlUtils.xml2Map(xml)); + return xmlMessage; } protected static WxCpXmlMessage fromXml(InputStream is) {