📄 jdomparser.java
字号:
package com.util.task;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import javax.xml.xpath.XPath;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class JDOMParser {
private String filePath=null;
//存储包头信息
private Integer recordNum=new Integer(0); //记录数
private String type=null; //类型
/**
* 记录数
* @return
*/
public Integer getRecordNum() {
return recordNum;
}
public void setRecordNum(Integer recordNum) {
this.recordNum = recordNum;
}
/**
* 包类型
* @return
*/
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public JDOMParser(){
}
//解析完数据以后得到 包信息,记录条数 packetInfo,recordList;
/**
* 解析XML文件
* @param filepath
*/
public List parser(String filePath) {
//System.out.println("44444444444444 "+filePath);
//filePath.replace("/", File.separator);
SAXBuilder sax=new SAXBuilder();
Document doc=null;
java.util.List _recList=null;
//boolean flag=false;
try {
doc=sax.build(filePath);
Element root=doc.getRootElement();
Element head=root.getChild("PacketHead");
Element recNum=head.getChild("RecordNum");
Element Type=head.getChild("Type");
this.setRecordNum(new Integer(recNum.getValue())); //设置数据包头记录数
this.setType(Type.getValue()); //设置数据包数据类型
java.util.List list=root.getChildren("Record");
_recList=new java.util.ArrayList(list.size());
for(Iterator it=list.iterator();it.hasNext();){
Element bean=(Element)it.next();
//Element FDLX=bean.getChild("FDLX");
String FDLX=bean.getChildText("FDLX");
String WZH=bean.getChildText("WZH");
String JZZL=bean.getChildText("JZZL");
String DABH=bean.getChildText("DABH");
String JSZH=bean.getChildText("JSZH");
String JYBH=bean.getChildText("JYBH");
String SF=bean.getChildText("SF");
String CPH=bean.getChildText("CPH");
String HPZL=bean.getChildText("HPZL");
String CFSJ=bean.getChildText("CFSJ");
String WZDD=bean.getChildText("WZDD");
String FKJE=bean.getChildText("FKJE");
String WZJF=bean.getChildText("WZJF");
String WZDM1=bean.getChildText("WZDM1");
String WZDM2=bean.getChildText("WZDM2");
String XM=bean.getChildText("XM");
String XZQH=bean.getChildText("XZQH");
String FZJG=bean.getChildText("FZJG");
String JD=bean.getChildText("JD");
String WD=bean.getChildText("WD");
Record record=new Record();
record.setFDLX(FDLX.charAt(0));
record.setWZH(WZH);
record.setJZZL(JZZL);
record.setDABH(DABH);
record.setJSZH(JSZH);
record.setJYBH(JYBH);
record.setSF(SF);
record.setCPH(CPH);
record.setHPZL(HPZL);
record.setCFSJ(CFSJ);
record.setWZDD(WZDD);
record.setFKJE(FKJE);
record.setWZJF(WZJF);
record.setWZDM1(WZDM1);
record.setWZDM2(WZDM2);
record.setXM(XM);
record.setXZQH(XZQH);
record.setFZJG(FZJG);
record.setJD(JD);
record.setWD(WD);
_recList.add(record);
System.out.println("------------"+FDLX);
System.out.println("------------"+bean.getChild("WZH").getValue());
System.out.println("------------"+bean.getChild("CPH").getValue());
}
// XPath xpath;
// try{
//buildXmlDoc(RECList,SysCunChuGlobal.getBakPath());
// }catch(IOException io){
// System.err.println("发生IO 错误,保存备份文件写入失败!");
// }
//flag=true;
} catch (Exception e) {
System.err.println("解析失败!"+e.getMessage());
return null;
}
return _recList;
//return flag;
}
/**
* 保存解析失败的文件
* @param file
* @param url
*/
public void saveErrFile(File file,String url){
if(file.exists()&&file.isFile()){
// String s=File.separator;
//System.out.println("-------------"+file.getPath());
String sub=file.getPath().substring(0,file.getPath().lastIndexOf("\\"));
// System.out.println(sub);
String _typeP=sub.substring(sub.lastIndexOf("\\")+1,sub.length());
String fullPath=url+"\\"+_typeP;
File errDir=new File(fullPath);
if(!errDir.exists()){
errDir.mkdir();
}
String datepath=url+File.separator+_typeP+File.separator+formatDate();
File dateFolder=new File(datepath);
if(!dateFolder.exists()){
dateFolder.mkdir();
}
//String errfileName=fullPath+"\\"+"6000"+_typeP+"_"+formatDateTime()+".xml";
String errFileName=file.getPath().substring(file.getPath().lastIndexOf("\\")+1,file.getPath().length());
String _name=datepath+File.separator+errFileName;
File errFile=new File(_name);
InputStream in=null;
OutputStream out=null;
try{
in=new FileInputStream(file);
out=new FileOutputStream(_name);
int i=0,j=0;
int len=new Long(file.length()).intValue();
byte abyte0[] = new byte[65535];
while(j<len){
i = in.read(abyte0, 0, 65535);
j += i;
out.write(abyte0, 0, i);
}
in.close();
out.close();
}catch(IOException e){
System.err.println("在写入解析失败的文件时发生异常!"+e.getMessage());
}finally{
try{
if(in!=null)
in.close();
if(out!=null)
out.close();
}catch(IOException e){
System.err.println(e.getMessage());
}
}
//
}
}
public static int getHours()
{
Calendar p = Calendar.getInstance();
int hours = p.get(Calendar.HOUR);
int AMPM = p.get(Calendar.AM_PM);
if (AMPM == Calendar.PM) hours += 12;
return hours;
}
public static int getMinutes()
{
Calendar p = Calendar.getInstance();
return p.get(Calendar.MINUTE);
}
public static int getSeconds()
{
Calendar p = Calendar.getInstance();
return p.get(Calendar.SECOND);
}
public List hasMoreXML(String url){
File fileDir =new File(url);
List list=new ArrayList();
String[] file1=null;
file1 = fileDir.list(new FilenameFilter(){//使用匿名内部类重写accept方法
public boolean accept(File dir, String name){
if(new File(dir,name).isDirectory()){
return true;
}
return name.toLowerCase().indexOf(".xml")!=-1;//
}
});
if(file1!=null)
{
for (int j = 0; j < file1.length; j++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -