微信消息处理JAXP-dom解析
package cn.lihainan.test;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.text.SimpleDateFormat; import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; import org.w3c.dom.Document;
import org.w3c.dom.Node; public class Demo1 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try { // 将请求、响应的编码均设置为UTF-8(防止中文乱码)
request.setCharacterEncoding("utf-8");
response.setContentType("textml;charset=utf-8");
InputStream inputStream = request.getInputStream(); String result = readFromInputStream(inputStream); PrintWriter out = response.getWriter(); out.println("原始消息:"); out.println(result); //解析 建立document解析
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
builder = factory.newDocumentBuilder(); InputStream xmlStream = new ByteArrayInputStream(result.getBytes("UTF-8"));
Document document = builder.parse(xmlStream);
//定义节点 根据节点从document中找到要输出的
Node ToUserName = document.getElementsByTagName("ToUserName").item(0);
System.out.println(ToUserName.getTextContent()); Node FromUserName = document.getElementsByTagName("FromUserName").item(0);
System.out.println(FromUserName.getTextContent()); Node MsgType= document.getElementsByTagName("MsgType").item(0);
System.out.println(MsgType.getTextContent()); Node Content = document.getElementsByTagName("Content").item(0);
System.out.println(Content.getTextContent()); Node MsgId= document.getElementsByTagName("MsgId").item(0);
System.out.println(MsgId.getTextContent()); out.println();
//输出
out.println("解析结果:");
out.print("FromUserName(来自):");
out.println(FromUserName.getTextContent());
out.print("ToUserName(发送至):");
out.println(ToUserName.getTextContent());
out.print("CreateTime(时间):"); Node createTime= document.getElementsByTagName("CreateTime").item(0);
int t = Integer.parseInt(createTime.getTextContent());
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
out.println(format.format((long)t*1000L));
out.print("MsgType(消息类型):");
out.println(MsgType.getTextContent());
out.print("Content(文本内容):");
out.println(Content.getTextContent());
out.print("MsgId(文件消息标识号):");
out.println(MsgId.getTextContent());
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //将输入流InputStream变为String
public String readFromInputStream(InputStream in) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
baos.close();
in.close();
// 解析内容 看网上更改 输出中文乱码 但是未解决 已知输入流为gbk 输出为utf-8 求如何转换
byte[] lens = baos.toByteArray();
String result = new String(lens,"UTF-8"); return result; }
}
微信消息处理JAXP-dom解析的更多相关文章
- 使用jaxp对比xml进行DOM解析
/*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import ...
- xml解析-jaxp之dom解析
package day06_parser.dom; /** * xml的解析技术:JAXP是Java API for XML Processing的英文字头缩写, * 中文含义是:用于XML文档处理的 ...
- 使用JAXP对xml文档进行DOM解析基础
XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式. sax: ...
- 2.1 使用JAXP 对 xml文档进行DOM解析
//使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...
- XML案例(使用JAXP进行DOM解析)
1.book.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- JAVA与DOM解析器提高(DOM/SAX/JDOM/DOM4j/XPath) 学习笔记二
要求 必备知识 JAVA基础知识.XML基础知识. 开发环境 MyEclipse10 资料下载 源码下载 sax.dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有它们是无 ...
- dom 解析xml文件
JAXP技术 JAXP即Java Api for Xml Processing该API主要是SUN提供的用于解析XML数据的一整套解决方案,主要包含了DOM和SAX解析技术.大家可以参见SUN的以下两 ...
- Java解析XML文档——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...
- DOM的概念和简单应用:使用DOM解析XML数据
概念:DOM是Document Object Model的简称,即文档数据模型. Oracle公司提供了JAXP(Java API for XML Processing)来解析XML.JAXP会把XM ...
随机推荐
- Understand
快捷键: Ctrl+Shift+H 折叠 Ctrl+Alt+F 替换
- Unity之定时调用
1.Invoke(string methodName,float time) 在一定时间调用methodName函数 using UnityEngine; using System.Collectio ...
- Table of Contents - Apache Commons
Apache Commons 简述 CLI Usage of CLI Option Properties Codec 常见的编码解码 Compress Configuration2 Quick sta ...
- U3D 飞机大战(MVC模式)解析--面向对象编程思想
在自己研究U3D游戏的时候,看过一些人的简单的游戏开发视频,写的不错,只是个人是java web 开发的人,所以结合着MVC思想,对游戏开发进行了一番考虑. 如果能把游戏更加的思想化,分工化,开发便明 ...
- c#中进程的使用
C#的Process类的一些用法 更多0 c# 进程 c#之process类相关整理 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 usin ...
- Part 52 Attributes in C#
- Chrome JS内存泄漏排查方法(Chrome Profiles)
原文网址:http://blog.csdn.net/kaitiren/article/details/19974269 JS内存泄漏排查方法(Chrome Profiles) Google Ch ...
- JQuery Pagination 分页插件 增加了首页尾页以及跳转功能
JQuery分页插件 挺好用的 但是官方是没有提供首页尾页以及跳转功能 我觉得这个功能可以有,于是就改进了一下 一个js一个css从连接里面下 链接:http://pan.baidu.com/s/1n ...
- 安装PHP软件
安装PHP软件 ① tar -zxvf php-5.2.5.tar.gz ② cd php-5.2.5 ③ 使用configure配置安装信息(最重要) ./configure \ --prefix= ...
- A@2a139a55 结果产生的原因
程序代码: public class ExplorationJDKSource { /** * @param args */ public static void main(String[] args ...