📄 vofactory.java
字号:
/*
* 创建日期 2005-10-29
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package databaseConnectPool;
import java.io.ByteArrayInputStream;
import java.io.Serializable;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class VOFactory {
// 构造出的对象集合
private ArrayList list=new ArrayList();
/** 利用反射获取结果集 */
public List parse(Serializable source, String xml){
try{
//构造 XML 输入流
ByteArrayInputStream ba=new ByteArrayInputStream(xml.getBytes());
//Dom4J 初始化
SAXReader reader = new SAXReader();
Document document = reader.read(ba);
Element root = document.getRootElement();
//获得类对象
Class c = source.getClass();
//获得构造函数
Constructor[] cons=c.getDeclaredConstructors();
Constructor con=cons[0];
//获得类中的字段
Field[] fields = c.getDeclaredFields();
//设置访问private字段的权限
AccessibleObject.setAccessible(fields,true);
//以特定名称获得 XML 元素列表
List lis = root.elements("ARSUBITEM");
//"ARSUBITEM"元素下的子元素
for(int i=0;i<lis.size();i++){
Element element=(Element)lis.get(i);
Iterator iter=element.elementIterator();
//从构造函数实例化对象
Serializable localObj=(Serializable)con.newInstance(null);
//按照字段个数循环
int j=0;
while(iter.hasNext()){
Element e=(Element)iter.next();
fields[j].set(localObj,e.getText());
j++;
}
list.add(localObj);
}
}catch(Exception e){
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
VOFactory v=new VOFactory();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -