微信消息处理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 ...
随机推荐
- hdu3068
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- String 和 StringBuffer的区别
String与StringBuffer的区别: 简单地说,就是一个常量和变量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋 ...
- JavaScript之简易计算器
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- IOS添加控件
YJQApp *appInfo =self.apps[i]; //.添加图片 UIImageView * iconView = [[UIImageView alloc]init]; CGFloat i ...
- jQuery中append、insertBefore、after与insertAfter方法注意事项
这里列的是针对初学jQuery者来说容易搞不懂的部分,我在这里把这些方法列了个清单,希望大家能看的懂.如下: 方法 源包装集/字串 目标包装集体 特性描述 A.append(B) B A 若目标包装集 ...
- IE6和IE8细节问题
1.对于使用jQuery的ajax.IE6要求使用带有全部的属性:例如IE对下面代码中type:"POST",有严格的要求,如果没有该属性,则无法向后他发送请求 $.ajax({ ...
- ApplicationContext容器的设计原理
1.在ApplicationContext容器中,我们以常用的FileSystemXmlApplicationContext的实现为例来说明ApplicationContext容器的设计原理. 2.在 ...
- 使用Linux系统中的SSH服务
使用Linux系统中的SSH服务 1.SSH服务应用场景 ① 可以实现对文件的上传与下载 ② 实现远程管理Linux 2.安装SSH服务器 服 务:sshd 位 置:光盘2 软 件:openssh-s ...
- Spring里用@RequestParam接受Date类型的url参数
首先引入joda-time包.maven的dependency: <dependency> <groupId>joda-time</groupId> <art ...
- 关于FileOutputStream的问题
FileoutputStream在文件不存在的情况下会新建文件,但是有几个注意点: 1.有目录名(文件夹名)和文件名重复的话,会报错: 2.目录名不存在的情况下,也会报错