stax和Do4j解析xml文件,并输出txt,zip,gz格式文件
2017-04-20 11:39
441 查看
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\\fangyi
4000
tao\\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\\fangyi
4000
tao\\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();
}
}
}
相关文章推荐
- GZ文件输出到TXT,ZIP,GZ文件
- 传智播客--3G开发之单元测试,日志输出,文件数据存储,XML文件的解析
- 关于vs2010 中c++输出字符串到txt文件中的格式问题
- 读取txt格式文件输出(点击下载txt模板)
- 解析xml文件,遍历输出xml文件中的所有节点, 最终模仿实现struts2框架
- zip, tar, tar.gz, tar.bz2, jar,7z等格式文件的压缩和解压方法
- Java读取txt或其他文件以UTF-8格式输出的时候,第一行代码出现“?”乱码的原因及解决方案!
- 用Python将gml文件中边的信息输出为csv(或者txt)格式
- txt文件中存储多行标题+空格+作者名,现按格式“标题+|+作者”的形式输出
- 压缩文件格式介绍zip, rar, gz, tar.gz, tgz, bz2, Z, tar等
- maven assembly 打包zip,gz等格式文件
- C++中cout控制输出格式和读写txt文件
- zip文件格式解析
- java解析TXT格式文件
- hadoop文件输出为txt格式
- python解析VOC的xml文件并转成自己需要的txt格式
- 解析固定格式txt文件插入数据库
- java找到文件夹下所有的指定格式文件并输出到txt
- NCL 读取 各种格式 然后把头文件重新定向输出到txt文件中
- python筛选特定文件的信息按照格式输出到txt