dom4j讀寫xml文件示例(EOS)


package com.primeton.eos;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
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.eos.foundation.data.DataObjectUtil;
import com.eos.system.annotation.Bizlet;

import commonj.sdo.DataObject;


@Bizlet("")
public class Dom4jUtil {
 @Bizlet("")
 
 public static StringcastDataObjects2XML(DataObject[] daos)
   throwsException {
  String filePath ="c:/abc/test.xml";
  Document doc =DocumentHelper.createDocument();
  Element root =doc.addElement("dicts");//這是XML的根目錄,在這裏我寫成了實體的複數名
  Element category =null;//這是實體名
  
  Element dicttypeid =null;
  Element dictid = null;
  Element dictname = null;
  Element status = null;
  Element sortno = null;
  Element rank = null;
  Element parentid = null;
  Element seqno = null;
  
  for (DataObject dao : daos){
   category =root.addElement("dict");//添加實體
   
   dicttypeid =category.addElement("dicttypeid");
   if(dao.getString("eosDictType/dicttypeid") != null)
    dicttypeid.addText(dao.getString("eosDictType/dicttypeid"));
   dictid =category.addElement("dictid");
   if(dao.getString("dictid") != null)
    dictid.addText(dao.getString("dictid"));
   dictname =category.addElement("dictname");
   if(dao.getString("dictname") != null)
    dictname.addText(dao.getString("dictname"));
   status =category.addElement("status");
   if(dao.getString("status") != null)
    status.addText(dao.getString("status"));
   sortno =category.addElement("sortno");
   if(dao.getString("sortno") != null)
    sortno.addText(dao.getString("sortno"));
   rank =category.addElement("rank");
   if(dao.getString("rank") != null)
    rank.addText(dao.getString("rank"));
   parentid =category.addElement("parentid");
   if(dao.getString("parentid") != null)
    parentid.addText(dao.getString("parentid"));
   seqno =category.addElement("seqno");
   if(dao.getString("seqno") != null)
    seqno.addText(dao.getString("seqno"));
  }
  
  OutputFormat xmlFormat = newOutputFormat();//添加一個文件導出屬性的實體
  xmlFormat.setEncoding("GBK");//將導出文件的編碼設置成GBK
  filePath =filePath.replace("\\", "/");//將路徑中的\替換成/
  File file = newFile(filePath);
  if(!file.exists())(newFile(filePath.substring(0,filePath.lastIndexOf("/")))).mkdirs();//如果是不存在的目錄,則生成對應的目錄
  XMLWriter writer = newXMLWriter(new FileWriter(filePath),xmlFormat);//生成寫XML文件的類
  writer.write(doc);
  writer.close();
  return filePath;
 }

 @Bizlet("")
 
 public static DataObject[]castXML2DataObject(String filePath) {
  List lists = newArrayList();//定義一個List,因爲返回的是數組,開始無法確定數組的長度,故先生成List
  SAXReader reader = newSAXReader();//讀取XML文件的類
  try {
   Document doc= reader.read(new File(filePath));
   Element root= doc.getRootElement();//獲取根節點
   IteratoreleIterator = root.elementIterator();//獲取實體集合
   DataObjectdao = null;
   
   while(eleIterator.hasNext()) {
    Elementdict = eleIterator.next();
    IteratordictIterator = dict.elementIterator();//獲取屬性集合
    
    while(dictIterator.hasNext()) {
     dao=DataObjectUtil.createDataObject("com.primeton.eos.dom4jutildb.EosDictEntry");
     dao.set("eosDictType/dicttypeid",dictIterator.next().getText());
     dao.set("dictid",dictIterator.next().getText());
     dao.set("dictname",dictIterator.next().getText());
     dao.set("status",dictIterator.next().getText());
     dao.set("sortno",dictIterator.next().getText());
     dao.set("rank",dictIterator.next().getText());
     dao.set("parentid",dictIterator.next().getText());
     dao.set("seqno",dictIterator.next().getText());
    }
    if(dao != null)lists.add(dao);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return (DataObject[])lists.toArray(new DataObject[lists.size()]);
 }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章