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()]);
}
}