stax和Do4j解析xml文件,并输出txt,zip,gz格式文件
来源:互联网 发布:淘宝 非典 编辑:程序博客网 时间:2024/06/06 07:31
package com.cn.boco.xml;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*@author fangyitao
*@date 2017年2月27日
*@time 下午2:01:17
*@description stax和Do4j解析xml文件,输出到txt,zip,gz文件
*@return
*/
public class demo2 {
public static void main(String[] args) {
//源文件(zip文件)
File file = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件\\TD-LTE_MRS_ZTE_OMC1_375237_20170206153000.zip");
//目标文件夹(用来存放输出的文件)
File targetFile = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件");
//stax解析输出文本,zip,gz格式
unXmlFromStax(deZip(file, targetFile),targetFile);
//Do4j解析输出文本,zip,gz格式
unXmlFromDo4j(deZip(file, targetFile),targetFile);
}
//解压zip文件
public static File deZip(File file,File targetFile){
File orgFile = null;
try {
ZipInputStream Zin=new ZipInputStream(new FileInputStream(file));
BufferedInputStream Bin=new BufferedInputStream(Zin);
ZipEntry entry;
while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){
orgFile = new File(targetFile.getName(),entry.getName());
if(!orgFile.exists()){
(new File(targetFile.getName())).mkdirs();
}
FileOutputStream out=new FileOutputStream(orgFile);
BufferedOutputStream Bout = new BufferedOutputStream(out);
int num;
while((num = Bin.read())!= -1){
Bout.write(num);
}
Bout.close();
out.close();
//System.out.println(orgFile.getParent());
//System.out.println(orgFile+"解压成功");
}
Bin.close();
Zin.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return orgFile;
}
//解析xml文件(stax解析)
public static void unXmlFromStax(File file,File orgFile){
System.out.println(file.getName());
InputStream stream;
try {
stream = new FileInputStream(file);
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(stream);
String mrName = null;
String smr = null;
String objectID = null;
String v = null;
GZIPOutputStream gzos = null;
ZipOutputStream zout = null;
File targetFile = null;
BufferedWriter bw = null;
while(reader.hasNext()){
int event = reader.next();
if(event == XMLStreamConstants.START_DOCUMENT){
System.out.println("文档开始");
}else if(event == XMLStreamConstants.END_DOCUMENT){
System.out.println("文档结束");
}else if(event == XMLStreamConstants.START_ELEMENT){
if(reader.getLocalName().equalsIgnoreCase("measurement")){
mrName = reader.getAttributeValue(0);
if(targetFile!=null){
String name1 = targetFile.getName();
String name2 = mrName+".txt";
if(!name1.equals(name2)){
closes(bw,zout, gzos);
//gzos.close();
//zout.close();
//bw.close();
//输出流
bw = unTxt(targetFile, mrName);//文本格式
gzos = unGz(targetFile, mrName);//gz格式
zout = unZip(targetFile, mrName);//zip格式
}
}
if(mrName!= null){
//targetFile = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件");
targetFile = orgFile;
if(targetFile.isDirectory()){
//输出流
bw = unTxt(targetFile, mrName);//文本格式
zout = unZip(targetFile, mrName);//zip格式
gzos = unGz(targetFile, mrName);//gz格式
}
}
//System.out.println(mrName);
}else if(reader.getLocalName().equalsIgnoreCase("smr")){
smr = reader.getElementText();
//System.out.println(smr);
}else if(reader.getLocalName().equalsIgnoreCase("object")){
objectID = reader.getAttributeValue(0);
}else if(reader.getLocalName().equalsIgnoreCase("v")){
v = reader.getElementText();
}
if(smr != null&&objectID != null){
//数据输出
unGz(gzos, "objectID:"+objectID+"======smr:"+smr+"\r\n");//gz格式
unZip(zout,"objectID:"+objectID+"======smr:"+smr+"\r\n");//zip格式
unTxt(bw,"objectID:"+objectID+"======smr:"+smr+"\r\n");//文本格式
objectID = null;
System.out.println("写入bojectID");
}if(v != null){
//数据输出
unGz(gzos, "v:"+v+"\r\n");//gz格式
unZip(zout,"v:"+v+"\r\n");//zip格式
unTxt(bw,"v:"+v+"\r\n");//文本格式
v = null;
System.out.println("写入V");
}
}
}
//gzos.close();
//zout.close();
//bw.close();
closes(bw,zout, gzos);
} catch (Exception e) {
e.printStackTrace();
}
}
//解析xml文件(Do4j解析)
public static void unXmlFromDo4j(File file,File orgFile){
System.out.println(file.getName());
System.out.println(file.getPath());
SAXReader sax = new SAXReader();//创建一个SAXReader对象
try {
Document document=sax.read(file);//获取document对象
Element root=document.getRootElement();//获取根节点
String mrName = null;
String smr = null;
String objectID = null;
String v = null;
GZIPOutputStream gzos = null;
ZipOutputStream zout = null;
File targetFile = null;
BufferedWriter bw = null;
//迭代器遍历根节点
Iterator rootIt = root.elementIterator();
while(rootIt.hasNext()){
Element element = (Element) rootIt.next();
if(element.getName().equals("eNB")){
Iterator eIt = element.elementIterator();
while(eIt.hasNext()){
Element eElement = (Element) eIt.next();
if(eElement.getName().equals("measurement")){
//获取measurement节点的属性值
Iterator mIt = eElement.attributeIterator();
while(mIt.hasNext()){
Attribute a = (Attribute) mIt.next();
if(a.getName().equals("mrName")){
mrName = a.getValue();
if(targetFile!=null){
String name1 = targetFile.getName();
String name2 = mrName+".txt";
if(!name1.equals(name2)){
closes(bw,zout, gzos);
//gzos.close();
//zout.close();
//bw.close();
//输出流
bw = unTxt(targetFile, mrName);//文本格式
gzos = unGz(targetFile, mrName);//gz格式
zout = unZip(targetFile, mrName);//zip格式
}
}
if(mrName!= null){
//targetFile = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件");
targetFile = orgFile;
if(targetFile.isDirectory()){
//输出流
bw = unTxt(targetFile, mrName);//文本格式
zout = unZip(targetFile, mrName);//zip格式
gzos = unGz(targetFile, mrName);//gz格式
}
}
}
}
//获取measurement节点的子节点
Iterator it = eElement.elementIterator();
while(it.hasNext()){
Element mElement = (Element) it.next();
if(mElement.getName().equals("smr")){
smr = mElement.getText();
}
if(mElement.getName().equals("object")){
//获取object节点的属性值
Iterator oIt = mElement.attributeIterator();
while(oIt.hasNext()){
Attribute object = (Attribute) oIt.next();
if(object.getName().equals("id")){
objectID = object.getValue();
//数据输出
unGz(gzos, "objectID:"+objectID+"======smr:"+smr+"\r\n");//gz格式
unZip(zout,"objectID:"+objectID+"======smr:"+smr+"\r\n");//zip格式
unTxt(bw,"objectID:"+objectID+"======smr:"+smr+"\r\n");//文本格式
objectID = null;
System.out.println("写入objectID");
}
}
//获取object节点下的子节点
Iterator vIt = mElement.elementIterator();
while(vIt.hasNext()){
Element oElement = (Element) vIt.next();
if(oElement.getName().equals("v")){
v = oElement.getText();
//数据输出
unGz(gzos, "v:"+v+"\r\n");//gz格式
unZip(zout,"v:"+v+"\r\n");//zip格式
unTxt(bw,"v:"+v+"\r\n");//文本格式
v = null;
System.out.println("写入V");
}
}
}
}
}
}
}
}
closes(bw,zout,gzos);
System.out.println("解析完成");
} catch (Exception e) {
e.printStackTrace();
}
}
//创建文本输出流(txt)
public static BufferedWriter unTxt(File targetFile,String mrName){
BufferedWriter bw = null;
targetFile = new File(targetFile.getAbsolutePath()+"\\"+mrName+".txt");
try {
targetFile.createNewFile();
bw = new BufferedWriter(new FileWriter(targetFile,true));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bw;
}
//输出文本格式
public static void unTxt(BufferedWriter bw,String str){
try {
bw.write(str);
} catch (IOException e) {
e.printStackTrace();
}
}
//创建zip输出流
public static ZipOutputStream unZip(File targetFile,String mrName){
ZipOutputStream zout = null;
try {
zout = new ZipOutputStream(new FileOutputStream(targetFile+"\\"+mrName+".zip"));
ZipEntry entry = new ZipEntry(mrName+".txt");
zout.putNextEntry(entry);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return zout;
}
//压缩成zip格式
public static void unZip(ZipOutputStream zout,String str){
try {
zout.write(str.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建Gz输出流
public static GZIPOutputStream unGz(File targetFile,String mrName){
GZIPOutputStream gzos = null;
try {
gzos = new GZIPOutputStream(new FileOutputStream(targetFile+"\\"+mrName+".txt.gz"));
} catch (Exception e) {
e.printStackTrace();
}
return gzos;
}
//压缩成GZ格式
public static void unGz(GZIPOutputStream gzos,String str){
try {
gzos.write(str.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭流(文本,zip,gz)
public static void closes(BufferedWriter bw,ZipOutputStream zip,GZIPOutputStream gz){
try {
bw.close();
zip.close();
gz.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*@author fangyitao
*@date 2017年2月27日
*@time 下午2:01:17
*@description stax和Do4j解析xml文件,输出到txt,zip,gz文件
*@return
*/
public class demo2 {
public static void main(String[] args) {
//源文件(zip文件)
File file = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件\\TD-LTE_MRS_ZTE_OMC1_375237_20170206153000.zip");
//目标文件夹(用来存放输出的文件)
File targetFile = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件");
//stax解析输出文本,zip,gz格式
unXmlFromStax(deZip(file, targetFile),targetFile);
//Do4j解析输出文本,zip,gz格式
unXmlFromDo4j(deZip(file, targetFile),targetFile);
}
//解压zip文件
public static File deZip(File file,File targetFile){
File orgFile = null;
try {
ZipInputStream Zin=new ZipInputStream(new FileInputStream(file));
BufferedInputStream Bin=new BufferedInputStream(Zin);
ZipEntry entry;
while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){
orgFile = new File(targetFile.getName(),entry.getName());
if(!orgFile.exists()){
(new File(targetFile.getName())).mkdirs();
}
FileOutputStream out=new FileOutputStream(orgFile);
BufferedOutputStream Bout = new BufferedOutputStream(out);
int num;
while((num = Bin.read())!= -1){
Bout.write(num);
}
Bout.close();
out.close();
//System.out.println(orgFile.getParent());
//System.out.println(orgFile+"解压成功");
}
Bin.close();
Zin.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return orgFile;
}
//解析xml文件(stax解析)
public static void unXmlFromStax(File file,File orgFile){
System.out.println(file.getName());
InputStream stream;
try {
stream = new FileInputStream(file);
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(stream);
String mrName = null;
String smr = null;
String objectID = null;
String v = null;
GZIPOutputStream gzos = null;
ZipOutputStream zout = null;
File targetFile = null;
BufferedWriter bw = null;
while(reader.hasNext()){
int event = reader.next();
if(event == XMLStreamConstants.START_DOCUMENT){
System.out.println("文档开始");
}else if(event == XMLStreamConstants.END_DOCUMENT){
System.out.println("文档结束");
}else if(event == XMLStreamConstants.START_ELEMENT){
if(reader.getLocalName().equalsIgnoreCase("measurement")){
mrName = reader.getAttributeValue(0);
if(targetFile!=null){
String name1 = targetFile.getName();
String name2 = mrName+".txt";
if(!name1.equals(name2)){
closes(bw,zout, gzos);
//gzos.close();
//zout.close();
//bw.close();
//输出流
bw = unTxt(targetFile, mrName);//文本格式
gzos = unGz(targetFile, mrName);//gz格式
zout = unZip(targetFile, mrName);//zip格式
}
}
if(mrName!= null){
//targetFile = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件");
targetFile = orgFile;
if(targetFile.isDirectory()){
//输出流
bw = unTxt(targetFile, mrName);//文本格式
zout = unZip(targetFile, mrName);//zip格式
gzos = unGz(targetFile, mrName);//gz格式
}
}
//System.out.println(mrName);
}else if(reader.getLocalName().equalsIgnoreCase("smr")){
smr = reader.getElementText();
//System.out.println(smr);
}else if(reader.getLocalName().equalsIgnoreCase("object")){
objectID = reader.getAttributeValue(0);
}else if(reader.getLocalName().equalsIgnoreCase("v")){
v = reader.getElementText();
}
if(smr != null&&objectID != null){
//数据输出
unGz(gzos, "objectID:"+objectID+"======smr:"+smr+"\r\n");//gz格式
unZip(zout,"objectID:"+objectID+"======smr:"+smr+"\r\n");//zip格式
unTxt(bw,"objectID:"+objectID+"======smr:"+smr+"\r\n");//文本格式
objectID = null;
System.out.println("写入bojectID");
}if(v != null){
//数据输出
unGz(gzos, "v:"+v+"\r\n");//gz格式
unZip(zout,"v:"+v+"\r\n");//zip格式
unTxt(bw,"v:"+v+"\r\n");//文本格式
v = null;
System.out.println("写入V");
}
}
}
//gzos.close();
//zout.close();
//bw.close();
closes(bw,zout, gzos);
} catch (Exception e) {
e.printStackTrace();
}
}
//解析xml文件(Do4j解析)
public static void unXmlFromDo4j(File file,File orgFile){
System.out.println(file.getName());
System.out.println(file.getPath());
SAXReader sax = new SAXReader();//创建一个SAXReader对象
try {
Document document=sax.read(file);//获取document对象
Element root=document.getRootElement();//获取根节点
String mrName = null;
String smr = null;
String objectID = null;
String v = null;
GZIPOutputStream gzos = null;
ZipOutputStream zout = null;
File targetFile = null;
BufferedWriter bw = null;
//迭代器遍历根节点
Iterator rootIt = root.elementIterator();
while(rootIt.hasNext()){
Element element = (Element) rootIt.next();
if(element.getName().equals("eNB")){
Iterator eIt = element.elementIterator();
while(eIt.hasNext()){
Element eElement = (Element) eIt.next();
if(eElement.getName().equals("measurement")){
//获取measurement节点的属性值
Iterator mIt = eElement.attributeIterator();
while(mIt.hasNext()){
Attribute a = (Attribute) mIt.next();
if(a.getName().equals("mrName")){
mrName = a.getValue();
if(targetFile!=null){
String name1 = targetFile.getName();
String name2 = mrName+".txt";
if(!name1.equals(name2)){
closes(bw,zout, gzos);
//gzos.close();
//zout.close();
//bw.close();
//输出流
bw = unTxt(targetFile, mrName);//文本格式
gzos = unGz(targetFile, mrName);//gz格式
zout = unZip(targetFile, mrName);//zip格式
}
}
if(mrName!= null){
//targetFile = new File("C:\\Users\\fangyitao\\Desktop\\实习生练习任务\\xml文件");
targetFile = orgFile;
if(targetFile.isDirectory()){
//输出流
bw = unTxt(targetFile, mrName);//文本格式
zout = unZip(targetFile, mrName);//zip格式
gzos = unGz(targetFile, mrName);//gz格式
}
}
}
}
//获取measurement节点的子节点
Iterator it = eElement.elementIterator();
while(it.hasNext()){
Element mElement = (Element) it.next();
if(mElement.getName().equals("smr")){
smr = mElement.getText();
}
if(mElement.getName().equals("object")){
//获取object节点的属性值
Iterator oIt = mElement.attributeIterator();
while(oIt.hasNext()){
Attribute object = (Attribute) oIt.next();
if(object.getName().equals("id")){
objectID = object.getValue();
//数据输出
unGz(gzos, "objectID:"+objectID+"======smr:"+smr+"\r\n");//gz格式
unZip(zout,"objectID:"+objectID+"======smr:"+smr+"\r\n");//zip格式
unTxt(bw,"objectID:"+objectID+"======smr:"+smr+"\r\n");//文本格式
objectID = null;
System.out.println("写入objectID");
}
}
//获取object节点下的子节点
Iterator vIt = mElement.elementIterator();
while(vIt.hasNext()){
Element oElement = (Element) vIt.next();
if(oElement.getName().equals("v")){
v = oElement.getText();
//数据输出
unGz(gzos, "v:"+v+"\r\n");//gz格式
unZip(zout,"v:"+v+"\r\n");//zip格式
unTxt(bw,"v:"+v+"\r\n");//文本格式
v = null;
System.out.println("写入V");
}
}
}
}
}
}
}
}
closes(bw,zout,gzos);
System.out.println("解析完成");
} catch (Exception e) {
e.printStackTrace();
}
}
//创建文本输出流(txt)
public static BufferedWriter unTxt(File targetFile,String mrName){
BufferedWriter bw = null;
targetFile = new File(targetFile.getAbsolutePath()+"\\"+mrName+".txt");
try {
targetFile.createNewFile();
bw = new BufferedWriter(new FileWriter(targetFile,true));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bw;
}
//输出文本格式
public static void unTxt(BufferedWriter bw,String str){
try {
bw.write(str);
} catch (IOException e) {
e.printStackTrace();
}
}
//创建zip输出流
public static ZipOutputStream unZip(File targetFile,String mrName){
ZipOutputStream zout = null;
try {
zout = new ZipOutputStream(new FileOutputStream(targetFile+"\\"+mrName+".zip"));
ZipEntry entry = new ZipEntry(mrName+".txt");
zout.putNextEntry(entry);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return zout;
}
//压缩成zip格式
public static void unZip(ZipOutputStream zout,String str){
try {
zout.write(str.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建Gz输出流
public static GZIPOutputStream unGz(File targetFile,String mrName){
GZIPOutputStream gzos = null;
try {
gzos = new GZIPOutputStream(new FileOutputStream(targetFile+"\\"+mrName+".txt.gz"));
} catch (Exception e) {
e.printStackTrace();
}
return gzos;
}
//压缩成GZ格式
public static void unGz(GZIPOutputStream gzos,String str){
try {
gzos.write(str.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭流(文本,zip,gz)
public static void closes(BufferedWriter bw,ZipOutputStream zip,GZIPOutputStream gz){
try {
bw.close();
zip.close();
gz.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
0 0
- stax和Do4j解析xml文件,并输出txt,zip,gz格式文件
- GZ文件输出到TXT,ZIP,GZ文件
- Stax 解析xml文件
- (stax) javax.xml.stream 解析xml文件
- Java生成和解析XML格式文件和字符串的实例代码【dom4j中的SAXReader对象读取并解析xml文件】
- SAX和STAX解析xml文档
- android解析txt文本文件和xml文件
- 生成和解析XML格式文件
- STAX XML 解析
- 使用 StAX 解析 XML
- JAVA解析XML(StAX)
- 使用 StAX 解析 XML
- 使用Stax解析XML
- STAX XML 解析
- stax方法解析XML
- stax 解析xml
- Stax解析XML
- 使用StAX解析XML
- 修改System.UI并编译
- 数据库三大范式
- Manacher算法总结
- Multiple Inheritance in C++
- MySQL锁类型以及子查询锁表问题、解锁
- stax和Do4j解析xml文件,并输出txt,zip,gz格式文件
- 怎么将U盘的FAT32转换成ntfs
- This application is modifying the autolayout engine from a background thread, which can lead
- 40多个关于人脸检测/识别的API、库和软件
- 安卓animation动画
- HTML meta viewport属性说明(mark)
- LLVM学习笔记(9)
- 利用JasperReport+iReport进行Web报表开发(java)
- 文字旋转的几种方法