[dom4j解析]xml,dom和list解析转换举例

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()+"删除失败!");
			  };
		  }


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值