切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
XML
微信开发之对象转换为xml
微信开发之对象转换为xml
2020-06-04
XML
前端之家
前端之家
收集整理的这篇文章主要介绍了
微信开发之对象转换为xml
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
package util; import java.io.InputStream; import java.io.Writer; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import message.resp.Article; import message.resp.ImageMessage; import message.resp.MusicMessage; import message.resp.NewsMessage; import message.resp.TextMessage; import message.resp.VideoMessage; import message.resp.VoiceMessage; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.util.QuickWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; import com.thoughtworks.xstream.io.xml.XppDriver; /** * 消息处理工具类 * */ public class MessageUtil { // 请求消息类型:文本 public static final String REQ_MESSAGE_TYPE_TEXT = "text"; // 请求消息类型:
图片
public static final String REQ_MESSAGE_TYPE_IMAGE = "image"; // 请求消息类型:语音 public static final String REQ_MESSAGE_TYPE_VOICE = "voice"; // 请求消息类型:视频 public static final String REQ_MESSAGE_TYPE_VIDEO = "video"; // 请求消息类型:地理位置 public static final String REQ_MESSAGE_TYPE_LOCATION = "location"; // 请求消息类型:
链接
public static final String REQ_MESSAGE_TYPE_LINK = "link"; // 请求消息类型:事件推送 public static final String REQ_MESSAGE_TYPE_EVENT = "event"; // 事件类型:subscribe(
订阅
) public static final String EVENT_TYPE_SUBSCRIBE = "subscribe"; // 事件类型:unsubscribe(取消
订阅
) public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe"; // 事件类型:scan(
用户
已关注时的扫描带参数
二维码
) public static final String EVENT_TYPE_SCAN = "scan"; // 事件类型:LOCATION(上报地理位置) public static final String EVENT_TYPE_LOCATION = "LOCATION"; // 事件类型:CLICK(
自定义
菜单
) public static final String EVENT_TYPE_CLICK = "CLICK"; // 响应消息类型:文本 public static final String RESP_MESSAGE_TYPE_TEXT = "text"; // 响应消息类型:
图片
public static final String RESP_MESSAGE_TYPE_IMAGE = "image"; // 响应消息类型:语音 public static final String RESP_MESSAGE_TYPE_VOICE = "voice"; // 响应消息类型:视频 public static final String RESP_MESSAGE_TYPE_VIDEO = "video"; // 响应消息类型:音乐 public static final String RESP_MESSAGE_TYPE_MUSIC = "music"; // 响应消息类型:图文 public static final String RESP_MESSAGE_TYPE_NEWS = "news"; /** * 解析微信发来的请求(XML) * * @param request * @return Map<String,String> * @throws Exception */ @SuppressWarnings("unchecked") public static Map<String,String> parseXml(HttpServletRequest request) throws Exception { // 将解析结果存储在HashMap中 Map<String,String> map = new HashMap<String,String>(); // 从request中取得输入流 InputStream inputStream = request.getInputStream(); // 读取输入流 SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); // 得到xml根元素 Element root = document.getRootElement(); // 得到根元素的所有子节点 List<Element> elementList = root.elements(); // 遍历所有子节点 for (Element e : elementList) map.put(e.getName(),e.getText()); // 释放资源 inputStream.close(); inputStream = null; return map; } /** * 扩展xstream使其
支持
CDATA */ private static XStream xstream = new XStream(new XppDriver() { public HierarchicalStreamWriter createWriter(Writer out) { return new PrettyPrintWriter(out) { // 对所有xml节点的转换都
增加
CDATA
标记
boolean cdata = true; @SuppressWarnings("unchecked") public void startNode(String name,Class clazz) { super.startNode(name,clazz); if(name.equals("CreateTime")){ cdata = false; }else { cdata = true; } } protected void writeText(QuickWriter writer,String text) { if (cdata) { writer.write("<![CDATA["); writer.write(text); writer.write("]]>"); } else { writer.write(text); } } }; } }); /** * 文本消息对象转换成xml * * @param textMessage 文本消息对象 * @return xml */ public static String messageToXml(TextMessage textMessage) { xstream.alias("xml",textMessage.getClass()); return xstream.toXML(textMessage); } /** *
图片
消息对象转换成xml * * @param imageMessage
图片
消息对象 * @return xml */ public static String messageToXml(ImageMessage imageMessage) { xstream.alias("xml",imageMessage.getClass()); return xstream.toXML(imageMessage); } /** * 语音消息对象转换成xml * * @param voiceMessage 语音消息对象 * @return xml */ public static String messageToXml(VoiceMessage voiceMessage) { xstream.alias("xml",voiceMessage.getClass()); return xstream.toXML(voiceMessage); } /** * 视频消息对象转换成xml * * @param videoMessage 视频消息对象 * @return xml */ public static String messageToXml(VideoMessage videoMessage) { xstream.alias("xml",videoMessage.getClass()); return xstream.toXML(videoMessage); } /** * 音乐消息对象转换成xml * * @param musicMessage 音乐消息对象 * @return xml */ public static String messageToXml(MusicMessage musicMessage) { xstream.alias("xml",musicMessage.getClass()); return xstream.toXML(musicMessage); } /** * 图文消息对象转换成xml * * @param newsMessage 图文消息对象 * @return xml */ public static String messageToXml(NewsMessage newsMessage) { xstream.alias("xml",newsMessage.getClass()); xstream.alias("item",new Article().getClass()); return xstream.toXML(newsMessage); } }
上一篇:使用xml.etree.ElementTree遍历xml
下一篇:知识储备:XML数据解析
猜你在找的XML相关文章
10分钟掌握XML、JSON及其解析
引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而...
作者:前端之家 时间:2020-08-12
[CXF REST标准实战系列] 一、JAXB xml与javaBean的转换
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere...
作者:前端之家 时间:2020-08-12
[CXF REST标准实战系列] 一、JAXB xml与javaBean的转换
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere...
作者:前端之家 时间:2020-08-12
10分钟掌握XML、JSON及其解析
http://blog.jobbole.com/79252/ 引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技...
作者:前端之家 时间:2020-08-12
自定义圆形控件RoundImageView并认识一下attr.xml
(点击上方公众号,可快速关注) 公众号:smart_android 作者:耿广龙|loonggg 点击“阅读原...
作者:前端之家 时间:2020-08-12
10分钟掌握XML、JSON及其解析
引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而...
作者:前端之家 时间:2020-08-12
10分钟掌握XML、JSON及其解析(上)
(点击上方公众号,可快速关注) 来源: Long Luo 的博客 链接:http://longluo.github.i...
作者:前端之家 时间:2020-08-12
10分钟掌握XML、JSON及其解析(中)
接上文 二、JSON XML很好很强大,但是最近有另外一个时代弄潮儿,这就是JSON。现在JSON的光...
作者:前端之家 时间:2020-08-12
10分钟掌握XML、JSON及其解析(下)
接上文 2.4 如何解析JSON? Android JSON所有相关类,都在org.json包下。 包括JSONObject、...
作者:前端之家 时间:2020-08-12
10分钟掌握XML、JSON及其解析
原文出处: Long Luo 的博客(@Long_Luo) 引言 NOKIA 有句著名的广告语:“科技以人...
作者:前端之家 时间:2020-08-12
编程分类
HTML
HTML5
JavaScript
CSS
jQuery
Bootstrap
Angularjs
TypeScript
Vue
Dojo
Json
Electron
Node.js
extjs
Express
XML
ES6
Ajax
Flash
Unity
React
Flex
Ant Design
Web前端
微信小程序
微信公众号
最新文章
• 10分钟掌握XML、JSON及其解
• [CXF REST标准实战系列] 一
• [CXF REST标准实战系列] 一
• 10分钟掌握XML、JSON及其解
• 自定义圆形控件RoundImage
• 【XML】
• 10分钟掌握XML、JSON及其解
• 10分钟掌握XML、JSON及其解
• 10分钟掌握XML、JSON及其解
• 10分钟掌握XML、JSON及其解
热门标签
更多 ►
关闭广告
单独headers
封装代码
提示错误
整数正则
非0开头
跳页
出页码
antd table
提示URL未注册
公众号支付
vue hash模式
iSlider
车牌键盘
循环图片
echarts 双折
左右布局
DllPlugin
对象创建
打字游戏
圈选
两栏
云函数
蒙版
ES2020
橱窗
无缝滚动轮播
色块碰撞
组件销毁
文档操作