xstream簡單使用(wx訊息體處理)
阿新 • • 發佈:2018-12-14
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 + '\'' + '}'; } }