利用反射从XML构造VO-xml教程
转载自:互联网 作者:cd3c.com
您正在看的xml教程是:利用反射从XML构造VO。
反射使您的程序代码能够接入装载到 JVM 中的类的内部信息,允许你编写与执行时,而不是源代码中选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。 首先观察下面的 XML 文件:
该 XML 文件描述了一个标段当前流程信息,接下来把它翻译成 VO :
public class BidProcess implements Serializable{
private String itemNo; private String itemName; private String subItemNo; private String subItemName; private String functionName;
/** * @return 返回 functionName。 */ public String getFunctionName() { return functionName; } /** * @param functionName 要设置的 functionName。 */ public void setFunctionName(String functionName) { this.functionName = functionName; } /** * @return 返回 itemName。 */ public String getItemName() { return itemName; } /** * @param itemName 要设置的 itemName。 */ public void setItemName(String itemName) { this.itemName = itemName; } /** * @return 返回 itemNo。 */ public String getItemNo() { return itemNo; } /** * @param itemNo 要设置的 itemNo。 */ public void setItemNo(String itemNo) { this.itemNo = itemNo; } /** * @return 返回 subItemName。 */ public String getSubItemName() { return subItemName; } /** * @param subItemName 要设置的 subItemName。 */ public void setSubItemName(String subItemName) { this.subItemName = subItemName; } /** * @return 返回 subItemNo。 */ public String getSubItemNo() { return subItemNo; } /** * @param subItemNo 要设置的 subItemNo。 */ public void setSubItemNo(String subItemNo) { this.subItemNo = subItemNo; }}
从 XML 构造 VO ,放入 List 中,代码如下:
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 [1] [2] 下一篇
