🎨 【小程序】回调消息解析类WxMaMessage增加allFieldsMap属性,以存储所有xml消息报文

This commit is contained in:
Binary Wang
2022-03-10 23:59:24 +08:00
parent eb8942c871
commit 13c80294a2
3 changed files with 97 additions and 11 deletions

View File

@@ -9,6 +9,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import lombok.Data;
import me.chanjar.weixin.common.error.WxRuntimeException;
import me.chanjar.weixin.common.util.XmlUtils;
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -17,6 +18,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.util.Map;
/**
* @author <a href="https://github.com/binarywang">Binary Wang</a>
@@ -26,6 +28,11 @@ import java.nio.charset.StandardCharsets;
public class WxMaMessage implements Serializable {
private static final long serialVersionUID = -3586245291677274914L;
/**
* 使用dom4j解析的存放所有xml属性和值的map.
*/
private Map<String, Object> allFieldsMap;
@SerializedName("Encrypt")
@XStreamAlias("Encrypt")
@XStreamConverter(value = XStreamCDataConverter.class)
@@ -206,9 +213,12 @@ public class WxMaMessage implements Serializable {
private WxMaSubscribeMsgEvent.WxMaSubscribeMsgEventJson uselessMsg;
public static WxMaMessage fromXml(String xml) {
return XStreamTransformer.fromXml(WxMaMessage.class, xml);
WxMaMessage message = XStreamTransformer.fromXml(WxMaMessage.class, xml);
message.setAllFieldsMap(XmlUtils.xml2Map(xml));
return message;
}
@Deprecated
public static WxMaMessage fromXml(InputStream is) {
return XStreamTransformer.fromXml(WxMaMessage.class, is);
}