1.需要导入DOM4J jar 包;
2.解析的完整代码;
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);
}
}
}