Dom4j的入门使用

引言

在设计模式中或者其他代码编写过程中,通常会用到面向抽象编程。即客户端只需要知道接口或者抽象类的名称即可,不需要关心具体的实现类的名称,而是通过在配置文件中配置相关的实现类来完成。同时修改配置文件即完成实现类的更换,从而使得程序对客户端也符合开闭原则。

好吧以上都是废话,主要就是说明啥时候需要使用Dom4j,就是说需要从配置文件中获取具体实现类时

准备工作

①需要使用dom4j.jar包,网上下载或者https://download.csdn.net/download/m1179457922/12634436,然后导入到工程中即可

②配置文件config.xml  ,具体位置无所谓,但是必须程序能访问到。例如

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<classPath>Dom4j.TestBean2</classPath>
</config>

为了完成XML的功能还需要

③一个接口:例如

public interface TestInterface {
	public void sayHello();
}

④两个具体实现类,例如

public class TestBean2 implements TestInterface{
	@Override
	public void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("hello Java");
	}
}
public class TestBean implements TestInterface{
	@Override
	public void sayHello() {
		System.out.println("hello world");
	}
}

⑤一个实现XML功能的类XMLUtil和一个客户端测试类

Dom4j的使用

说了这么多,进入正题。Dom4j的使用就是四步(是不是特别简便,O(∩_∩)O)

①创建SAXReader对象。(该对象是Dom4j本身自带的,使用无参构造器直接new即可)

②使用SAXReader对象的read()来获得Document对象(Document对象会有很多种,主要要使用dom4j包下的那个)(read方法的参数就是要读取的XML文件的路径,绝对相对都可以)

③就是使用Document对象的getRootElement()来获得Element对象,例子中获得是<config></config>

④利用Element对象的各种方法来完成相关的操作

1、elements():获得该Element下的所有子标签,返回值是是一个List集合,当然也可以传入字符串来获得对应的标签,返回值就是一个Element对象。通过递归遍历可以获得整个XML标签树

2、attributeValue(""):传入一个字符串,来获得标签中的对应属性的值,返回值是String(例如id、value、style、class等等)

3、elementText(""):传入一个字符串,获得对应子标签的标签体(注意是子标签的标签体,如果要获得本标签的标签体,使用getText())

等等等等,API很多,但是这几个比较常用。至此,我们得到了具体实现类的路径。下面通过反射来获取。较为简单,不赘述。

代码实现

XMLUtil代码:

public class XMLUtils {
	public static Object getBean() {
		Object resutlt = null;
		try {
			//创建SAXReader对象
			SAXReader reader = new SAXReader();
			//获取XML文件对应的Document对象
			Document document = reader.read("src\\Dom4j\\config.xml");
			//获得根标签
			Element rootElement = document.getRootElement();
			//获得子标签的文本值(类名)
			String elementText = rootElement.elementText("classPath");
			System.out.println(rootElement.getText());
			//反射获得类
			Class c = Class.forName(elementText);
			resutlt = c.newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resutlt;
	}
}

客户端

public class MainTest {
	public static void main(String[] args) {
		TestInterface interface1 = (TestInterface) XMLUtils.getBean();
		interface1.sayHello();
	}
}

结果

当配置文件为TestBean时,输出为hello world

当配置文件为TestBean2时,输出为hello Java

总结

本文是对Dom4j如何使用XML文件进行配置,从而保证对客户端的开闭原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值