阅读 277

DOM4J配合XPath解析XML文件

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"));
复制代码
文章分类
后端
文章标签