设为首页 收藏本站
查看: 554|回复: 0

[经验分享] 【java项目实战】dom4j解析xml文件,连接Oracle数据库

[复制链接]

尚未签到

发表于 2016-8-22 08:38:55 | 显示全部楼层 |阅读模式
简介
  
  dom4j是由dom4j.org出品的一个开源XML解析包。这句话太官方,我们还是看一下官方给出的解释。如下图:
DSC0000.jpg
  
  dom4j是一个易于使用的、开源的,用于解析XML,XPath和XSLT等语言的库。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准。
  

特点
  
  
  dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例如Hibernate,包括sun公司自己的JAXM也用了dom4j。
  

下载
  
  既然dom4j具有上面N多的优点,所以我们必须揭开dom4j的神秘面纱。使用dom4j开发,需下载dom4j相应的jar文件。
  
1.官网下载::http://www.dom4j.org/dom4j-1.6.1/

2.dom4j是sourceforge.net上的一个开源项目,因此可以到http://sourceforge.net/projects/dom4j下载其最新版

  
  打开dom4j-1.6.1的解压文件,我们可以看到有docs帮助的文件夹,也有dom4j解析xml文件的dom4j-1.6.1.jar文件。我们只需要把dom4j-1.6.1.jar文件构建到我们开发的项目中就可以使用dom4j开发了。
  

实例
  
  下面我们使用dom4j读取系统配置文件,实现连接Oracle数据库的功能。在开始之前,将我们需要的jar构建到我们的项目中,例如:
  1、将Oracle jdbc驱动拷贝到WEB-INF/lib下
  2、将dom4j相关的jar拷贝到WEB-INF/lib下
(1)dom4j-1.6.1.jar
(2)jaxen-1.1-beta-6.jar(支持xpath相关的jar包

DSC0001.jpg
  
  连接数据库类:DbUitl.java
   
  

package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DbUtil {
/**
* 取得Connection
* @return
*/
public static Connection getConnection(){
Connection conn=null;
try {
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
//获取oracle驱动的路径
Class.forName(jdbcConfig.getDriverName());
// String url = "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL";
// 数据库连接,oracle代表连接的是oracle数据库;thin:@MyDbComputerNameOrIP代表的是数据库所在的IP地址(可以保留thin:);
//1521代表连接数据库的端口号;ORCL代表的是数据库名称
conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

  
数据库配置文件:sys-config.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:oracle</url>
<user-name>drp1</user-name>
<password>drp1</password>
</db-info>
</config>
  
jdbc的配置信息:JdbcConfig.java
  
  
  

package util;
/**
* jdbc配置信息
* @author liang
*
*/
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;
}

}

  
dom4j读取xml:XmlConfigReader.java
  
  
  

package 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 liang
*
*/
public class XmlConfigReader {
//单例懒汉式(延迟加载lazy)
//设置为空,使用在new,不用不new
private static XmlConfigReader instance = null;
//定义JdbcConfig成员变量,保存jdbc相关配置信息
private JdbcConfig jdbcConfig = new JdbcConfig();;
private XmlConfigReader(){
//创建saxReader对象
SAXReader reader = new SAXReader();
//通过当前线程的类加载器,获得文件的相对路径,将xml文件读入到输入流
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
try {
// 通过read方法读取xml文件, 转换成Document对象  
Document doc = reader.read(in);
//获得节点对象,取得jdbc相关的配置信息
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
Element urlElt = (Element)doc.selectObject("/config/db-info/url");
Element userNameElt = (Element)doc.selectObject("/config/db-info/user-name");
Element passwordElt = (Element)doc.selectObject("/config/db-info/password");
//设置jdbc相关的配置
jdbcConfig.setDriverName(driverNameElt.getStringValue());
jdbcConfig.setUrl(urlElt.getStringValue());
jdbcConfig.setUserName(userNameElt.getStringValue());
jdbcConfig.setPassword(passwordElt.getStringValue());
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 加锁,实现多线程的同步机制,防止多线程的访问冲突
* @return
*/
public static synchronized XmlConfigReader getInstance(){
if(instance == null){
instance = new XmlConfigReader();
}
return instance;
}
/**
* 返回jdbc的相关配置
* @return
*/
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
}

  


  解析:读写XML文档主要依赖于org.dom4j.io包,其中提供DOMReader和SAXReader两类不同方式,而调用方式是一样的。这就是依靠接口的好处。
  其中,reader的read方法是重载的,可以从InputStream, File, Url等多种不同的源来读取,得到的Document对象就代表了整个XML。
  

dom4j解析xml的四步
  
  1、以单例模式创建SAXReader对象
  2、将xml文件读入到输入流中
  3、read方法读取xml文件,转换成document对象
  4、通过document对象取到xml文件的节点值
  

总结
  
  俗话说的好:站在巨人的肩膀上。dom4j就是巨人,能够清楚的认识dom4j,并会使用就ok了。
  
  
  支持源码下载:dom4j解析xml,连接oracle数据库
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-261094-1-1.html 上篇帖子: 使用DBExportDoc V1.0 For Oracle导出数据库表结构详细步骤 下篇帖子: Oracle 网络配置用到的sqlnet.ora, tnsnames.ora, listener.ora文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表