XML文件解析方式(使用Dom4J)20181228

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;
	}```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值