diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java
index b047ac54c..c2958eaf2 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java
@@ -25,8 +25,8 @@ import me.chanjar.weixin.cp.util.xml.XStreamTransformer;
@Slf4j
@Data
public class WxCpTpXmlMessage implements Serializable {
-
private static final long serialVersionUID = 6031833682211475786L;
+
/**
* 使用dom4j解析的存放所有xml属性和值的map.
*/
@@ -109,8 +109,8 @@ public class WxCpTpXmlMessage implements Serializable {
protected String telephone;
@XStreamAlias("Id")
- @XStreamConverter(value = IntConverter.class)
- protected Integer id;
+ @XStreamConverter(value = XStreamCDataConverter.class)
+ protected String id;
@XStreamAlias("Name")
@XStreamConverter(value = XStreamCDataConverter.class)
@@ -410,7 +410,7 @@ public class WxCpTpXmlMessage implements Serializable {
@XStreamAlias("NotifyNode")
public static class NotifyNode implements Serializable {
private static final long serialVersionUID = 6031833682211475786L;
-
+
@XStreamAlias("ItemName")
protected String itemName;
@XStreamAlias("ItemUserId")
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessageTest.java
index 1e4a1450a..04d9455cf 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessageTest.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessageTest.java
@@ -147,6 +147,7 @@ public class WxCpTpXmlMessageTest {
" \n" +
" \n" +
" 1234567890123456\n" +
+ " " +
" 1\n" +
"";
@@ -156,6 +157,7 @@ public class WxCpTpXmlMessageTest {
assertEquals(wxXmlMessage.getCreateTime(), Long.valueOf(1348831860));
assertEquals(wxXmlMessage.getMsgType(), "text");
assertEquals(wxXmlMessage.getMsgId(), "1234567890123456");
+ assertEquals(wxXmlMessage.getId(), "etEsNADQAAaiB0cWCSDFiJ2qCap-ww9A");
}
@Test
@@ -231,4 +233,27 @@ public class WxCpTpXmlMessageTest {
assertEquals(wxXmlMessage.getApprovalInfo().getNotifyNodes().get(0).getItemImage(), "http://www.qq.com/xxx.png");
assertEquals(wxXmlMessage.getApprovalInfo().getNotifyNodes().get(0).getItemUserId(), Integer.valueOf(3));
}
+
+ @Test
+ public void testFromXml() {
+ String xml = "\n" +
+ " \n" +
+ " \n" +
+ " 1348831860\n" +
+ " \n" +
+ " \n" +
+ " 1234567890123456\n" +
+ " 2\n" +
+ " 1\n" +
+ "";
+
+ WxCpTpXmlMessage wxXmlMessage = WxCpTpXmlMessage.fromXml(xml);
+ assertEquals(wxXmlMessage.getToUserName(), "toUser");
+ assertEquals(wxXmlMessage.getFromUserName(), "fromUser");
+ assertEquals(wxXmlMessage.getCreateTime(), Long.valueOf(1348831860));
+ assertEquals(wxXmlMessage.getMsgType(), "text");
+ assertEquals(wxXmlMessage.getMsgId(), "1234567890123456");
+ assertEquals(wxXmlMessage.getId(), "2");
+
+ }
}