需要導入DOM4J jar 包
public static List<Object> parseXml(String file,Class<?> cls) throws DocumentException, InstantiationException, IllegalAccessException {
//使用DOM4J解析xml文件首先我們獲取saxReader
SAXReader reader = new SAXReader();
//加載xml文件,獲取一個Document對象
Document document = reader.read(new File(file));
//使用Document解析xml,調用getRootElement方法獲取xml文件的根節點
Element rootElement = document.getRootElement();
List<Object> objects = new ArrayList<Object>();
List<Element> elements = rootElement.elements();
for(Element element : elements) {
Object object = cls.newInstance();
getElement(element,object,object.getClass());
objects.add(object);
}
return objects;
}
public static void getElement(Element element,Object obj,Class<?> cls) {
//解析指定的節點
List<Element> elements = element.elements();
if(elements==null || elements.size()==0) {
//解析當前節點
String name = element.getName();
String value = element.getText();
//根據名稱獲取屬性
try {
Field field = cls.getDeclaredField(name);
field.setAccessible(true);
Class<?> type = field.getType();
if(type == int.class) {
field.setInt(obj, Integer.parseInt(value));
}else if(type == float.class) {
field.setFloat(obj, Float.parseFloat(value));
}else if(type == double.class) {
field.setDouble(obj, Double.parseDouble(value));
}else if(type == boolean.class) {
field.setBoolean(obj, Boolean.parseBoolean(value));
}else if(type == char.class) {
field.setChar(obj, value.charAt(0));
}else if(type == String.class){
field.set(obj, value);
} else {
throw new Exception("參數類型無法解析");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(name+"對應的字段沒找到。。。");
}
return;
}else {
for(Element e : elements) {
getElement(e,obj,cls);
}
}
}