在做之前,必需要有dom4j的jar文件。
一)首先我们的准备一个xml文件,没有不要紧。自己编一个。上代码。
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="user1" class="com.oracle.xml.User">
<property name="username" value="张三" />
<property name="password" value="zhangsan123456" />
<property name="phone" value="18001280118" />
</bean>
<bean id="user2" class="com.oracle.xml.User">
<property name="username" value="李四" />
<property name="password" value="lisi123456" />
</bean>
</beans>
二)我们得准备一个实体类
private String id;
private String username;
private String password;
private String phone;
三)创建一个util类
private static HashMap<String, Object> map;
static {
try {
// 创建一个ico存储器
map = new HashMap<>();
// 使用dom4j
SAXReader sax = new SAXReader();
// 读取文件
Document document = sax.read(Util.class.getResourceAsStream("beans.xml"));
// 获取根节点元素
Element root = document.getRootElement();
// 获取bean
List<Element> element1 = root.elements("bean");
for (Element e : element1) {
// 获取bean下面的ID和class
String id = e.attributeValue("id");
String class_name = e.attributeValue("class");
// 反射得到元数据
Class clazz = Class.forName(class_name);
// 反射创建该bean标签对应的对象
Object obj = clazz.newInstance();
Method setid = clazz.getMethod("setId", String.class);
// 把对象的id值set一下
setid.invoke(obj, id);
List<Element> list = e.elements("property");
for (Element list1 : list) {
String name = list1.attributeValue("name");
String value = list1.attributeValue("value");
String methodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
// 反射得到set方法
Method setter = clazz.getMethod(methodName, String.class);
// 调用方法赋值。
setter.invoke(obj, value);
}
map.put(id, obj);
}
} catch (Exception e2) {
System.out.println(e2);
}
要生成get与set方法
四)都完成以后,接下来 编写一个main
HashMap<String,Object> ioc=Util.getMap();
User user=(User)ioc.get("user1");
System.out.println(user);
OK解析成功