微信开发中用dom4j解析消息时的错误
2016-03-31 17:44
615 查看
我用dom4j解析微信xml消息时用这种方法
一点都不标准,但是可以采用下面的方法
Document document = reader.read(inputStream);他报错Error on line 1 of document : The root element is required in a well-formed document. Nested exception: The root element is required in a well-formed document.通过分析我感就是(如果我错了请兄弟们指出)用SAXReader他会严格检查xml头部但是微信回复消息如下
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
一点都不标准,但是可以采用下面的方法
// 将解析结果存储在HashMap中 Map<String, String> map = new HashMap<String, String>(); // 从request中取得输入流 InputStream inputStream = request.getInputStream(); // 一定要utf-8 InputStreamReader inputReader = new InputStreamReader(inputStream, "UTF-8"); BufferedReader buffer = new BufferedReader(inputReader); String message = ""; String s = ""; while ((s = buffer.readLine()) != null) { message += s; } System.out.println(message); System.out.println("获取输入流"); // // 读取输入流 SAXReader reader = new SAXReader(); // Document document = reader.read(inputStream); // 将字符串转化为XML文档对象 Document document = DocumentHelper.parseText(message); Element root = document.getRootElement(); List<Element> elements = root.elements(); // 遍历根节点下所有子节点 Iterator<?> iter = root.elementIterator(); // // 遍历所有子节点 // for (Element e : elementList) { // System.out.println(e.getName() + "|" + e.getText()); // map.put(e.getName(), e.getText()); // } while (iter.hasNext()) { Element ele = (Element) iter.next(); map.put(ele.getName(), ele.getText()); } // 释放资源 inputStream.close();
相关文章推荐
- 微信公众号开发时,按物理返回键时,提示是否退出对话框
- 微信开发中的编码问题
- 微信支付常见问题
- ViewPage+Fragment + ListView可左右滑动翻页(仿微信页面)
- 微信支付学习记录1
- 函数——小程序,大作用
- 微信服务升级——指尖上的超级表格
- 微信调试环境介绍
- [算法]微信红包
- 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友
- 如何在微信浏览器的H5商城获取用户openid
- Android 仿微信朋友圈9宫格图片展示&多选图片
- 微信获取用户信息实例
- 如何获得微信公众号关注页面地址?
- 微信进入消息页面,光标处自动弹出软键盘设置
- 通过SectionIndexer实现微信通讯录
- Android 之应用启动图标未读消息BadgeNumber动态提醒(如微信 QQ等)
- 2016年腾讯模拟笔试“微信红包”问题
- 微信支付
- Java微信公众平台开发(十四)【番外篇】——微信web开发者工具使用