【前言】
最近学习drp的知识,在回顾xml的时候,又学习了一种读取xml的新的方式:dom4j技术。 dom4j属于java 的xml API,关于dom4j.jar中的类与方法,我们浏览官方的文档学习下:http://tool.oschina.net/apidocs/apidoc?api=dom4j1.6.1%2Fapidocs,下面我就一个例子来实践dom4j读取的xml的方式!
【内容】
A:准备条件:
引入Jar包:
1.dom4j-1.6.1.jar和jaxen-1.1-beta.jar
dom4j-1.6.1.jar主要作用是读取xml的文件;
jaxen主要是一个开源的xpath库,可以协助dom4j找到xml标签中的内容;
ojdbc主要是OracleDrive驱动类,可以与oracle数据库连接
B:逻辑及代码展示
1.将需要获取的oracle的jdbc的内容封装实体:JdbcConfig.java
package com.bjpowernode.drp.util; public class JdbcConfig { private String url; private String drivename; private String username; private String password; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getDrivename() { return drivename; } public void setDrivename(String drivename) { this.drivename = drivename; } 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; } /** * 对Object的tostring方法进行重写! */ @Override public String toString() { // TODO Auto-generated method stub return this.getClass().getName()+ "{DriverName:"+drivename+",URl:"+url+",UserName:"+username+",Password:"+password+"}"; } }2.用 xml文本写入oracle数据库的相关信息:url,oracle的drivername,以及username和password:
命名:sys-conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db-info>
<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
<url>jdbc:oracle:thin:@localhost:1521:ORALCEDB</url>
<user-name>system</user-name>
<password>cyl</password>
</db-info>
</config>
3.使用dom4j读取xml文本,并且赋值给已经封装好的oracle的jdbc的实体:
package com.bjpowernode.drp.util; import java.io.InputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** *解析sys-config.xml 文件 * @author cyl520 * */ public class XmlConfigReader { //懒汉式加载-常银玲-2017年3月11日16:44:19 private static XmlConfigReader instance=null; //保存jdbc的相关配置信息。 private JdbcConfig jdbcConfig=new JdbcConfig(); private XmlConfigReader(){ //采用的是dom4j的方式读取xml的中内容 SAXReader saxReader=new SAXReader(); //资源加载,输入流 InputStream inputStream= Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-conf.xml"); try { Document doc= saxReader.read(inputStream); //*******取得jdbc相关的信息------------------------------------------ //获取drivername Element driverElement=(Element)doc.selectObject("/config/db-info/driver-name"); //获取url Element urlElement=(Element)doc.selectObject("/config/db-info/url"); //获取用户名 Element usernamElement=(Element)doc.selectObject("/config/db-info/user-name"); //获取密码 Element password=(Element)doc.selectObject("/config/db-info/password"); //*******将获取的xml中的内容存入到jdbcconfig实体中-------------------------------- jdbcConfig.setDrivename(driverElement.getStringValue()); jdbcConfig.setUrl(urlElement.getStringValue()); jdbcConfig.setUsername(usernamElement.getStringValue()); jdbcConfig.setPassword(password.getStringValue()); } catch (DocumentException e) { // TODO: handle exception e.printStackTrace(); } } /** * 返回实例化的xmlconfigReader * @return */ public static synchronized XmlConfigReader getInstance() { if (instance==null) { instance=new XmlConfigReader();} return instance; } /** *返回jdbc的相关配置。 * @return */ public JdbcConfig getJdbcConfig() { return jdbcConfig; } }4.将已经得到jdbcConfig实体获取oracle连接:
package com.bjpowernode.drp.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.sqlException; /** * 用于连接数据! * @author cyl520 * */ public class DbUtil { public static Connection getConnection(){ Connection conn=null; try { //1.获取jdbcconfig的配置内容 JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig(); //2.根据jdbc中的drivername去寻找ojdbc的类 Class.forName(jdbcConfig.getDrivename()); //3.连接 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){ Connection connString=DbUtil.getConnection(); System.out.println(connString); } }
【总结】:
其实在没有学习Java之前我们应用的都是dom技术,使用dom来读取xml标签,后来dom4j是Java的xml的API,越来愈多的使用dom4j来读取xml,在了解xml的时候发现读取xml的方式不只是我们学习到的xml以及dom4j技术,当然还有Java的SAX技术,以及jdom技术,将在后面的博客中提到,希望对您有帮助!