XML解析(dom4j)DEMO===炒鸡炒鸡简单

2 篇文章 0 订阅
1 篇文章 0 订阅

在做之前,必需要有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解析成功

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值