1、拷贝jar包
2、创建公共方法,作用是已知xml文件名和相关类名,返回相关类对象
public static Object getBean (Element element,Class entity ) {
Object obj =null;
try {
obj = entity.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
Field[] fields = entity.getDeclaredFields();
try {
for(Field field:fields) {
field.setAccessible(true);
String name = field.getName();
try {
element.elementTextTrim(name);
} catch (Exception e) {
continue;
}
String value = element.elementTextTrim(name);
if(field.getType().equals(String.class)) {
field.set(obj, value);
}else if(field.getType().equals(int.class)) {
field.set(obj, Integer.parseInt(value));
}else if(field.getType().equals(Date.class)) {
field.set(obj, new SimpleDateFormat("yyyy-MM-dd").parse(value));
}
}
}catch (Exception e) {
e.printStackTrace();
}
return obj;
}
3、创建xml文件和相关类
<?xml version="1.0" encoding="UTF-8"?>
<resp>
<name>zhangsan</name>
<age>20</age>
<birth>1998-10-20</birth>
<sex>male</sex>
</resp>
public class Person {
private String name;
private int age;
private Date birth;
private String sex;
public Person() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", birth=" + birth + ", sex=" + sex + "]";
}
}
3、类的功能实现
public static Person getPerson(String xml) {
Element element = null;
Document document = null;
try {
SAXReader saxReader = new SAXReader();
document = saxReader.read(Test.class.getClassLoader().getResourceAsStream(xml));
element = document.getRootElement();
} catch (DocumentException e) {
e.printStackTrace();
}
Person person = (Person)getBean(element,Person.class);
return person;
}```