DOM4J是一个开源XML解析包,很多框架解析XML文件都使用了它,比如常用Mybatis、Spring框架。
下面介绍它的基本使用:
引入依赖
<!--dom4j依赖--> <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> </dependency> <!--xpath表达式依赖--> <dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.6</version> </dependency>复制代码
准备一个XML文件applicationConfig.xml
<?xml version="1.0" encoding="UTF-8" ?><configuration><!--数据库配置信息--><dataSource><property name="driverClass" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></configuration>复制代码
解析XML
public Document parse() throws DocumentException {// 通过类加载器将配置文件加载到内存InputStream inputStream = XmlConfigBuilder.class.getClassLoader().getResourceAsStream("applicationConfig.xml");// 解析XML文件SAXReader reader = new SAXReader(); Document document = reader.read(inputStream);return document; }复制代码
获取文档根节点
Element rootElement = document.getRootElement();复制代码
使用XPath进行导航查找具体标签
XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。
// 读取property标签List propertyList = rootElement.selectNodes("//property"); Properties properties = new Properties();for (Object o : propertyList) { Element element = (Element)o;// 获取标签属性String value = element.attributeValue("value"); String name = element.attributeValue("name"); properties.setProperty(name,value); }// 将property标签内容转换为DruidDataSource对象DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(properties.getProperty("driverClass")); druidDataSource.setUrl(properties.getProperty("jdbcUrl")); druidDataSource.setUsername(properties.getProperty("username")); druidDataSource.setPassword(properties.getProperty("password"));复制代码