Dom4J解析xml⽂件动态转换为ListBean或者Map集合
⼤家在解析⼤量相似xml⽂件的时候是否会遇到这样⼀个问题:冗余的代码去set定义的实体对象Bean的值,基本都是⼀样的操作
⽽且毫⽆任何代码价值可⾔所以在这写了⼀个简单的例⼦,类封装了⼏个⽅法你只需传⼊xml⽂件,或者URL路径。和Bean.Class 类名
即可⾃动传回你需要的List集合。
需要解析的xml⽂件
0 2 0
张三0 qsina0@sina.com 1 1
1
192.168.1.0
2012-06-07 15:35:33
1
张三1 qsina1@sina.com 1 1
1
192.168.1.1
2012-06-07 15:35:33
在进⾏相关操作中需要如下包:
下⾯是贴出的代码:
package com.jeecms.common.util;
import java.lang.reflect.Field;import java.net.URL;
import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlParseUtil { /**
* 反射设置实体不同类型字段的值 <暂时只⽀持 ⽇期 字符串 boolean Integer值设置 待扩建> *
* @param field * @param obj * @param value
* @throws Exception */
public static void convertValue(Field field, Object obj, String value)
throws Exception {
SimpleDateFormat sim = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\"); if (field.getGenericType().toString().equals(\"class java.lang.Integer\")) { field.set(obj, Integer.parseInt(value));
} else if (field.getGenericType().toString().equals(\"boolean\")) { field.set(obj, Boolean.parseBoolean(value)); } else if (field.getGenericType().toString().equals( \"class java.util.Date\")) {
field.set(obj, sim.parse(value)); } else {
field.set(obj, value); } } /**
* 解析xml⽂件返回保存cls的List集合,如果返回码resultCode=1时则返回List为null *
* @param xml * @param cls * @return
* @throws Exception */
@SuppressWarnings(\"unchecked\")
public static List> parseXml2List(String xml, Class> cls) throws Exception { List