后端开发 \ Java \ Dom4j解析XML来读取数据库配置文件信息

Dom4j解析XML来读取数据库配置文件信息

总点击129
简介:最近在学习XML的知识,首先浅谈一下我对XML的理解: 1.XML是用于数据交互的,存储数据信息,HTML是用于数据展示

最近在学习XML的知识,首先浅谈一下我对XML的理解:

1.XML是用于数据交互的,存储数据信息,HTML是用于数据展示

2.XML的标签是自定义的,HTML是固定的

3.XML其实类似JSON,存储交互数据的一种格式,只不过XML更加广泛的被应用,因为XML跨平台交互性好

4.XML的解析方式有DOM,SAX原始解析方式,DOM是整个XML加载进来解析,SAX是读到哪儿解析到哪儿,这两种方式解析的API十分繁琐。

还有DMO4J,也是目前最流行的解析方式。这种方式需要依赖第三方jar包,包括:(需要的话直接百度下载就好了)

Dom4j解析XML来读取数据库配置文件信息


JDOM还未学习,暂不介绍。


下面看下我做的demo项目结构,使用DOM4J来解析jdbc.xml文件,此文件包含数据库连接配置信息。XmlConfigReader类来读取xml信息,DbUtil工具类通过调用XmlConfigReader类读取到的信息创建数据库连接。

在这个项目中XML存储数据的功能被很好的体现。

Dom4j解析XML来读取数据库配置文件信息


第一步是创建我们的数据库配置文件 jdbc.xml,此文件保存着(我自己的)数据库连接配置信息:

<?xml version="1.0" encoding="UTF-8"?>

<properties>

<db>

<!-- 这里面写你自己的数据库信息 -->

<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>

<url>jdbc:oracle:thin:@10.1.42.33:1521:wzp</url>

<user-name>newhis</user-name>

<password>nexhis123</password>

</db>

</properties>第二步创建与数据库连接配置信息相对应的实体类

package com.entity;

public class JdbcConfig {

private String driverName;

private String url;

private String userName;

private String password;

public String getDriverName() {

return driverName;

}

public void setDriverName(String driverName) {

this.driverName = driverName;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

@Override

public String toString() {

return "JdbcConfig [driverName=" + driverName + ",url=" + url

+ ",userName=" + userName + ",password=" + password + "]";

}

}


第三步创建解析类,用来读取jadb.xml中的数据库配置信息

此类main方法会输出:JdbcConfig [driverName=oracle.jdbc.driver.OracleDriver,url=jdbc:oracle:thin:@10.1.42.33:1521:wzp,userName=newhis,password=nexhis123]

显而易见,这个结果就是我们需要的存储在jdbc.xml中的数据库连接配置信息。

package com.csdn;

import java.io.InputStream;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import com.entity.JdbcConfig;

public class XmlConfigReader {

private static XmlConfigReader instance = null;

private JdbcConfig jdbcConfig = new JdbcConfig();

private XmlConfigReader() {

SAXReader reader = new SAXReader();

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.xml");

try {

Document doc = reader.read(in);

//取得jdbc相关配置信息

Element driverNameElt = (Element)doc.selectObject("/properties/db/driver-name");

Element urlElt = (Element)doc.selectObject("/properties/db/url");

Element userNameElt = (Element)doc.selectObject("/properties/db/user-name");

Element passwordElt = (Element)doc.selectObject("/properties/db/password");

//设置jdbc相关的配置

jdbcConfig.setDriverName(driverNameElt.getStringValue());

jdbcConfig.setUrl(urlElt.getStringValue());

jdbcConfig.setUserName(userNameElt.getStringValue());

jdbcConfig.setPassword(passwordElt.getStringValue());

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static synchronized XmlConfigReader getInstance() {

if (instance == null) {

instance = new XmlConfigReader();

}

return instance;

}

/**

* 返回jdbc相关配置

* @return

*/

public JdbcConfig getJdbcConfig() {

return jdbcConfig;

}

public static void main(String[] args) {

JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();

System.out.println(jdbcConfig);

}

}第四步就是当我们需要创建数据库连接时,一般用DbUtil工具类调用第二部的解析XML类,读取出jdbc.xml中的数据库配置信息,然后创建连接。

package com.DBUTil;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import com.csdn.XmlConfigReader;

import com.entity.JdbcConfig;

public class DbUtil {

/**

* 取得Connection

* @return

*/

public static Connection getConnection() {

Connection conn = null;

try {

JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();

Class.forName(jdbcConfig.getDriverName());

conn = DriverManager.getConnection(jdbcConfig.getUrl(),jdbcConfig.getUserName(),jdbcConfig.getPassword());

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

public static void main(String[] args) { //输出连接

System.out.println(DbUtil.getConnection());

}

}DbUtil类的main方法,返回的是一个数据库连接对象:oracle.jdbc.driver.T4CConnection@7062b849

PS:ojdbc.jar这个包是DbUtil创建数据库连接使用的,和DOM4J解析XML并无关系,解析XML用到的JAR包只需要我在文章开始提到的那两个就可以了,注意,不要落下jaxen.jar,我刚开始搭建这个demo的时候就是报错,原因就是少了这个jar包。


意见反馈 常见问题 官方微信 返回顶部