package com.xxx.actions.outline;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.xxx.dbutils.dao.TblOutlinedocrecordDAO;
import com.xxx.dbutils.pojo.TblOutlinedocrecord;
import com.xxx.utils.FileUtils;
public class OutlineXmlOper {
private static final Logger logger = Logger.getLogger(FileUtils.class);
/**
* 将xml文件读取到dom中
*/
public static Document readfromXmlFile(File xml){
SAXReader sax = new SAXReader();
if(xml.exists()){
try {
Document dom = sax.read(xml);
return dom;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
/**
* 将dom解析成修改意见TblOutlinedocrecord集合list
* @author mayuechuan
* @param dom
* @return
*/
public static List<TblOutlinedocrecord> createDocrecordListfromDom(Document dom){
Element root = dom.getRootElement();
List<Element> elist = root.elements("record");
List<TblOutlinedocrecord> recordlist = new ArrayList<TblOutlinedocrecord>();
TblOutlinedocrecord record = null;
for(Element ele : elist){
record = new TblOutlinedocrecord();
record.setPkId(ele.element("pkId").getText());
record.setFkOutlineid(ele.element("outlineid").getText());
record.setFkPapercodes(ele.element("papercodes").getText());
record.setFkUsername(ele.element("username").getText());
record.setColContentpath(ele.element("path").getText());
record.setColTime(ele.element("time").getText());
record.setColIdcard(ele.element("idcard").getText());
record.setColName(ele.element("name").getText());
record.setColStatus(Integer.parseInt(ele.element("status").getText()));
recordlist.add(record);
}
return recordlist;
}
/**
* 将修改意见记录list解析成dom
* @author mayuechuan
* @param recordlist
* @return
*/
public static Document createDocrecordListXmlDom(List<TblOutlinedocrecord> recordlist) {
//Document document = DocumentHelper.createDocument(DocumentHelper.createElement("editrecords"));
Document document = DocumentHelper.createDocument();
Element root = DocumentHelper.createElement("editrecords");
document.setRootElement(root);
for(TblOutlinedocrecord record: recordlist){
Element rec = root.addElement("record");
rec.addElement("pkId").setText(record.getPkId());
rec.addElement("outlineid").setText(record.getFkOutlineid());
rec.addElement("papercodes").setText(record.getFkPapercodes());
rec.addElement("username").setText(record.getFkUsername());
rec.addElement("path").setText(record.getColContentpath());
rec.addElement("time").setText(record.getColTime());
String idcard = record.getColIdcard();
rec.addElement("idcard").setText(idcard==null?"":idcard);
String name = record.getColName();
rec.addElement("name").setText(name==null?"":name);
rec.addElement("status").setText(record.getColStatus()+"");
}
return document;
}
/**
* 将dom解析到xml文档
* @author mayuechuan
* @param document
* @param xmlpath
* @param encoding
*/
public static void transformDom2XML(Document document, String xmlpath, String encoding){
//把生成的xml文档存放在硬盘上 true代表是否换行
OutputFormat format = new OutputFormat("",true);
format.setEncoding(encoding);
try {
XMLWriter xmlwrt = new XMLWriter(new FileOutputStream(xmlpath),format);
xmlwrt.write(document);
xmlwrt.close();
} catch (Exception e) {
// TODO: handle exception
logger.error(e);
}
}
}
list转xml:
<pre name="code" class="java">List<TblOutlinedocrecord> olist = TblOutlinedocrecordDAO.getInst(1).find("from TblOutlinedocrecord");
Document dom = createDocrecordListXmlDom(olist);
transformDom2XML(dom, "d:/record.xml", "gbk");
xml转list:
File xmlfile = new File(unzipdir+"\\editrecord.xml");
if(xmlfile.exists()){
List<TblOutlinedocrecord> recordlist
= OutlineXmlOper.createDocrecordListfromDom(
OutlineXmlOper.readfromXmlFile(xmlfile));
for(TblOutlinedocrecord record: recordlist){
TblOutlinedocrecordDAO.getInst(examtype).saveOrUpdate(record);
}
while(!xmlfile.delete()){
logger.error(xmlfile.getName()+"删除失败!");
};
}