1. 程式人生 > >xstream簡單使用(wx訊息體處理)

xstream簡單使用(wx訊息體處理)

 xml->map    &&  bean->map

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.thoughtworks.xstream.XStream;

/**
 * @description: wx訊息體處理
 * @author: fengze
 * @create: 2018-10-10 17:31
 **/
public class WechatMessageUtil {
    // 各種訊息型別,除了掃帶二維碼事件
    /**
     * 文字訊息
     */
    public static final String MESSAGE_TEXT = "text";
    /**
     * 圖片訊息
     */
    public static final String MESSAtGE_IMAGE = "image";
    /**
     * 圖文訊息
     */
    public static final String MESSAGE_NEWS = "news";
    /**
     * 語音訊息
     */
    public static final String MESSAGE_VOICE = "voice";
    /**
     * 視訊訊息
     */
    public static final String MESSAGE_VIDEO = "video";
    /**
     * 小視訊訊息
     */
    public static final String MESSAGE_SHORTVIDEO = "shortvideo";
    /**
     * 地理位置訊息
     */
    public static final String MESSAGE_LOCATION = "location";
    /**
     * 連結訊息
     */
    public static final String MESSAGE_LINK = "link";
    /**
     * 事件推送訊息
     */
    public static final String MESSAGE_EVENT = "event";
    /**
     * 事件推送訊息中,事件型別,subscribe(訂閱)
     */
    public static final String MESSAGE_EVENT_SUBSCRIBE = "subscribe";
    /**
     * 事件推送訊息中,事件型別,unsubscribe(取消訂閱)
     */
    public static final String MESSAGE_EVENT_UNSUBSCRIBE = "unsubscribe";
    /**
     * 事件推送訊息中,上報地理位置事件
     */
    public static final String MESSAGE_EVENT_LOCATION_UP = "LOCATION";
    /**
     * 事件推送訊息中,自定義選單事件,點選選單拉取訊息時的事件推送
     */
    public static final String MESSAGE_EVENT_CLICK = "CLICK";
    /**
     * 事件推送訊息中,自定義選單事件,點選選單跳轉連結時的事件推送
     */
    public static final String MESSAGE_EVENT_VIEW = "VIEW";

    /**
     * 將xml轉化為Map集合
     *
     * @param request
     * @return
     */
    public static Map<String, String> xmlToMap(HttpServletRequest request) {
        Map<String, String> map = new HashMap<String, String>();
        SAXReader reader = new SAXReader();
        InputStream ins = null;
        try {
            ins = request.getInputStream();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        Document doc = null;
        try {
            doc = reader.read(ins);
        } catch (DocumentException e1) {
            e1.printStackTrace();
        }
        Element root = doc.getRootElement();
        @SuppressWarnings("unchecked")
        List<Element> list = root.elements();
        for (Element e : list) {
            map.put(e.getName(), e.getText());
        }
        try {
            ins.close();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        return map;
    }

    /**
     * 文字訊息轉化為xml
     *
     * @param textMessage
     * @return
     */
    public static String textMessageToXml(WxMessageequest textMessage) {
        XStream xstream = new XStream();
        xstream.alias("xml", textMessage.);
        return xstream.toXML(textMessage);

    }

}
實體類:
import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
 * @description: 微信訊息
 * @author: fengze
 * @create: 2018-10-10 14:10
 **/
@XStreamAlias("xml")
public class WxMessageequest {
    //接收方openId
    @XStreamAlias("ToUserName")
    private String toUserName;
    //開發者微訊號
    @XStreamAlias("FromUserName")
    private String fromUserName;
    //訊息建立時間
    @XStreamAlias("CreateTime")
    private Integer createTime;
    //text
    @XStreamAlias("MsgType")
    private String msgType;
    //訊息體
    @XStreamAlias("Content")
    private String content;
    @XStreamAlias("Event")
    private String event;
    @XStreamAlias("EventKey")
    private String eventKey;
    @XStreamAlias("MsgId")
    private String msgId;

    @XStreamAlias("MenuId")
    private String menuId;

    public String getToUserName() {
        return toUserName;
    }

    public void setToUserName(String toUserName) {
        this.toUserName = toUserName;
    }

    public String getFromUserName() {
        return fromUserName;
    }

    public void setFromUserName(String fromUserName) {
        this.fromUserName = fromUserName;
    }

    public Integer getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Integer createTime) {
        this.createTime = createTime;
    }

    public String getMsgType() {
        return msgType;
    }

    public void setMsgType(String msgType) {
        this.msgType = msgType;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getEvent() {
        return event;
    }

    public void setEvent(String event) {
        this.event = event;
    }

    public String getEventKey() {
        return eventKey;
    }

    public void setEventKey(String eventKey) {
        this.eventKey = eventKey;
    }

    public String getMsgId() {
        return msgId;
    }

    public void setMsgId(String msgId) {
        this.msgId = msgId;
    }

    public String getMenuId() {
        return menuId;
    }

    public void setMenuId(String menuId) {
        this.menuId = menuId;
    }

    @Override
    public String toString() {
        return "WxMessageequest{" +
                "toUserName='" + toUserName + '\'' +
                ", fromUserName='" + fromUserName + '\'' +
                ", createTime=" + createTime +
                ", msgType='" + msgType + '\'' +
                ", content='" + content + '\'' +
                ", event='" + event + '\'' +
                ", eventKey='" + eventKey + '\'' +
                '}';
    }
}