一、XML文件的生成
说明:
XMLWriter :读取传入的数据封装类(MyDataclass )中的数据写入到xml文件中,并用BASE64Encoder对数据进行加密。
MyDataclass :数据封装bean.
package com.test;
import java.io.File;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
import org.apache.log4j.Logger;
import com.tsxd.trans.model.transdata.FieldData;
import com.tsxd.trans.model.transdata.RowData;
import com.tsxd.trans.model.transdata.TransToHospData;
public class XMLWriter {
private static final Logger logger=Logger.getLogger(XMLWriter.class);
private MyDataclass trans_data=null;
private sun.misc.BASE64Encoder base64_encode;
public XMLWriter(MyDataclass data){
trans_data=data;
base64_encode=new sun.misc.BASE64Encoder();
}
public boolean writeXml(String outputFileName){
boolean result=false;
if (null==trans_data){
return false;
}
XMLOutputFactory outputFactory=XMLOutputFactory.newInstance();
FileWriter output=null;
XMLStreamWriter xmlWriter=null;
long row_id=1;
try{
output=new FileWriter(new File(outputFileName));
xmlWriter=outputFactory.createXMLStreamWriter(output);
xmlWriter.writeStartDocument("GB2312","1.0");
xmlWriter.writeStartElement("root");
xmlWriter.writeStartElement("version");
xmlWriter.writeCharacters("1.0");
xmlWriter.writeEndElement();//end of version
xmlWriter.writeStartElement("metadatas");
xmlWriter.writeStartElement("metadata");
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
xmlWriter.writeAttribute("generatetime",sf.format(new Date()));
xmlWriter.writeAttribute("generate_org_code", trans_data.getGenerate_org_code());
xmlWriter.writeAttribute("charset_encode", "GB2312");
xmlWriter.writeAttribute("dest_org_id",trans_data.getDest_org_id());
xmlWriter.writeEndElement(); //end of metadata
xmlWriter.writeEndElement(); //end of metadatas
xmlWriter.writeStartElement("data");
xmlWriter.writeAttribute("tablename", base64_encode.encode(trans_data.getTablename().getBytes()));
List<RowData> row_list=trans_data.getRow_datas();
for(int i=0;i<(row_list.size());i++){
RowData row_data=row_list.get(i);
xmlWriter.writeStartElement("row");
xmlWriter.writeAttribute("op", "");
xmlWriter.writeAttribute("row_id", String.valueOf(row_id));
List<FieldData> field_datas=row_data.getField_datas();
for(int j=0;j<field_datas.size();j++){
FieldData field=field_datas.get(j);
xmlWriter.writeStartElement(base64_encode.encode(field.getField_name().getBytes()));
xmlWriter.writeCharacters(base64_encode.encode(field.getData_value().getBytes()));
xmlWriter.writeEndElement();//end of fieldname
}
row_id=row_id+1;
xmlWriter.writeEndElement();//end of row
}
xmlWriter.writeEndElement(); //end of data
xmlWriter.writeEndElement(); //end of root
xmlWriter.close();
output.close();
result=true;
}catch(Exception e){
logger.error("产生 "+outputFileName+"时发生了错误!");
logger.error(e.getMessage(),e);
}finally{
if (xmlWriter!=null){
try{
xmlWriter.close();
}catch(Exception e){
}
}
if (output!=null){
try{
output.close();
}catch(Exception e){
}
}
}
return result;
}
}