import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.security.AnyTypePermission;
import com.wj.wx.domain.event.CardPassOrNotPassCheckEvent;
import com.wj.wx.domain.event.CardUpdateMemberCardEvent;
import com.wj.wx.domain.event.CardUserGetCardEvent;
import com.wj.wx.domain.event.CommonEvent;
public class XsteamTest {
public static void main(String[] args) throws Exception {
String xml = "<xml> \n" + " <ToUserName><![CDATA[112]]></ToUserName> \n"
+ " <FromUserName><![CDATA[111]]></FromUserName> \n" + " <CreateTime>123456789</CreateTime> \n"
+ " <MsgType><![CDATA[event]]></MsgType> \n"
+ " <Event><![CDATA[card_pass_check]]></Event> //不通过为card_not_pass_check \n"
+ " <CardId><![CDATA[cardid]]></CardId> \n" + " <RefuseReason><![CDATA[非法代制]]></RefuseReason> \n"
+ "</xml>";
xml = "<xml>\n" + "<ToUserName> <![CDATA[gh_fc0a06a20993]]> </ToUserName>\n"
+ "<FromUserName> <![CDATA[oZI8Fj040-be6rlDohc6gkoPOQTQ]]></FromUserName>"
+ "<CreateTime>1472551036</CreateTime>" + "<MsgType> <![CDATA[event]]> </MsgType>"
+ "<Event> <![CDATA[user_get_card]]> </Event>"
+ "<CardId> <![CDATA[pZI8Fjwsy5fVPRBeD78J4RmqVvBc]]> </CardId>" + "<IsGiveByFriend>0</IsGiveByFriend>"
+ "<UserCardCode> <![CDATA[226009850808]]> </UserCardCode>"
+ "<FriendUserName> <![CDATA[]]> </FriendUserName>" + "<OuterId>0</OuterId>"
+ "<OldUserCardCode> <![CDATA[]]> </OldUserCardCode>" + "<OuterStr> <![CDATA[12b]]> </OuterStr>"
+ "<IsRestoreMemberCard>0</IsRestoreMemberCard>" + "<IsRecommendByFriend>0</IsRecommendByFriend> "
+ "</xml>";
XStream stream = new XStream();
stream.addPermission(AnyTypePermission.ANY);
stream.processAnnotations(CommonEvent.class);//BASE
stream.processAnnotations(CardPassOrNotPassCheckEvent.class);
stream.processAnnotations(CardUserGetCardEvent.class);
stream.processAnnotations(CardUpdateMemberCardEvent.class);
CommonEvent event = (CommonEvent) stream.fromXML(xml);
String evenType = event.getEvent().trim();
switch (evenType) {
case "user_get_card":
CardUserGetCardEvent userGetCardEvent = (CardUserGetCardEvent) stream.fromXML(xml);
System.out.println(userGetCardEvent.getToUserName());
break;
case "card_pass_check":
case "card_not_pass_check":
CardPassOrNotPassCheckEvent passCheckEvent = (CardPassOrNotPassCheckEvent) stream.fromXML(xml);
System.out.println(passCheckEvent.getMsgType());
break;
case "update_member_card":
CardUpdateMemberCardEvent updateMemberCardEvent = (CardUpdateMemberCardEvent) stream.fromXML(xml);
System.out.println(updateMemberCardEvent.getCardId());
break;
default:
System.out.println(evenType);
break;
}
}
}