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:HUGUI</url>
<user-name>drp1</user-name>
<password>drp1</password>
</db-info>
<dao-factory>
<!--
<item-dao-factory>com.hugui.drp.basedata.dao.ItemDaoFactory4Oracle</item-dao-factory>
-->
<item-dao-factory>com.hugui.drp.basedata.dao.ItemDaoFactory4MySql</item-dao-factory>
<user-dao-factory>com.hugui.drp.basedata.dao.ItemDaoFactory4Oracle</user-dao-factory>
</dao-factory>
</config>
XmlConfigReader.java
package com.hugui.drp.util;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 用单例模式解析sys-config.xml文件
* @author Administrator
*
*/
public class XmlConfigReader {
// //饿汉式
// private static XmlConfigReader instance = new XmlConfigReader();
//
// private XmlConfigReader(){
//
// }
//
// public static XmlConfigReader getInstance(){
// return instance;
// }
//满汉式(延迟加载lazy)
private static XmlConfigReader instance = null;
//保存dao工厂的名称
//key=名称 value=具体类完整路径
private Map<String, String> daoFactoryMap = new HashMap<String, String>();
//保存jdbc相关配置信息
private JdbcConfig jdbcConfig = new JdbcConfig();
private XmlConfigReader(){
SAXReader reader = new SAXReader();
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
try {
Document doc = reader.read(in);
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.setDirverName(driverNameElt.getStringValue());
jdbcConfig.setUrl(urlElt.getStringValue());
jdbcConfig.setUserName(userNameElt.getStringValue());
jdbcConfig.setPassword(passwordElt.getStringValue());
System.out.println("读取jdbcConfig----->>" + jdbcConfig);
//读取DaoFactory信息
List daoFactoryList = doc.selectNodes("/config/dao-factory/*");
for(int i=0; i<daoFactoryList.size(); i++){
Element daoFactoryElt = (Element)daoFactoryList.get(i);
String tagName = daoFactoryElt.getName();
String tagText = daoFactoryElt.getText();
System.out.println("读取jdbcConfig----->>" + tagText);
//放入Map
daoFactoryMap.put(tagName, tagText);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static synchronized XmlConfigReader getInstance(){
if(instance == null){
instance = new XmlConfigReader();
}
return instance;
}
/**
* 返回jdbc相关配置
* @return
*/
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
/**
* 根据标签名称取得DaoFactory的名字
*
* @param daoFactoryName
* @return daoFactory的完整类路径
*/
public String getDaoFactory(String daoFactoryName){
return daoFactoryMap.get(daoFactoryName);
}
public static void main(String [] args){
String itemDaoFactory = XmlConfigReader.getInstance().getDaoFactory("item-dao-factory");
System.out.println(itemDaoFactory);
// JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
// System.out.println(jdbcConfig.toString());
}
}
分享到:
相关推荐
通过这个例子,你可以学习到如何在实际开发中使用DOM4J进行XML的解析、查询和修改,这对于处理XML格式的数据交换、配置文件或Web服务响应非常有用。同时,了解如何在Java工程中处理文件路径,也是日常开发中不可或缺...
在本例中,我们将深入探讨如何使用DOM4J来解析XML文件。 首先,我们需要理解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输数据,具有自描述性和结构化的特点,广泛应用于网络...
在这个例子中,我们将深入理解DOM4J如何解析XML文件,同时也会探讨一些相关工具的使用。 XML(eXtensible Markup Language)是一种结构化数据格式,广泛应用于数据交换、配置文件等领域。DOM(Document Object ...
本篇将通过一个实际的例子来探讨如何使用Dom4j解析XML配置文件。 首先,我们需要了解DOM4J的基本概念。DOM(Document Object Model)是一种用于表示XML或HTML文档的标准模型,而Dom4j是基于DOM的,但它比标准的DOM...
在这个“dom4j解析xml例子”中,我们将深入探讨DOM4J如何帮助开发者在Java环境中有效地处理XML数据。 首先,我们需要了解XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置...
在本实例中,我们将深入探讨如何使用DOM4J解析XML,并利用这些数据连接Oracle数据库进行数据操作。 首先,让我们了解DOM4J的基本用法。DOM4J的主要类包括`Document`、`Element`、`Attribute`和`Namespace`。`...
**Dom4j详解:解析XML的强大工具** Dom4j是一个开放源码的Java库,它提供了灵活且功能强大的API来处理XML文档。在Java世界中,XML作为一种数据交换格式广泛应用于各种应用程序,如配置文件、数据传输、文档存储等。...
- **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...
在这个“dom4j解析xml文件所需jar和测试例子.zip”压缩包中,包含了三个关键的JAR文件和一个测试类,它们是使用DOM4J解析XML文件的基础。 1. **dom4j-1.6.1.jar**:这是DOM4J的核心库,包含了处理XML的各种类和接口...
DOM4J提供了一种灵活的方式来解析XML文档,可以将其转换为一个可操作的DOM树结构。这个树形结构由节点组成,包括元素节点、属性节点、文本节点等,每个节点都可以被访问和修改。 在DOM4J中,XML文档的读取通常通过`...
在实际应用中,DOM解析XML文件常用于动态网页的数据交互、XML配置文件的读取和处理等场景。但需要注意,DOM解析在处理大型XML文件时可能会消耗大量内存,因此在资源有限的环境下,可能需要考虑使用更轻量级的解析...
一、DOM4J解析XML的基本步骤 1. 导入DOM4J库:首先,你需要在项目中引入DOM4J库。如果这是一个Java项目,你可能已经从压缩包中包含了所需的jar文件,如dom4j-1.6.1.jar。 2. 创建Document对象:解析XML文件的第一...
下面是一个简单的DOM4J解析XML配置文件的示例代码: ```java import org.dom4j.Document; import org.dom4j.DocumentFactory; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4...
总结起来,这个示例展示了如何在Java中利用DOM4J解析XML配置文件,结合抽象工厂模式和反射机制来创建和管理对象。这样的设计允许开发者在不修改代码的情况下,通过调整配置文件就能改变系统的运行行为,提高了软件的...
本文将深入解析一个使用DOM4J进行XML文件读取的例子,并详细阐述其中涉及的关键知识点。 ### DOM4J概述 DOM4J(Document Object Model for Java)是一个开源的、高性能的XML解析器。它提供了类似于DOM的接口,但比...
本文将深入探讨如何使用DOM4J库在Java中解析XML文件,以`province_city.xml`为例。 首先,DOM4J是Java的一个强大的XML处理库,它提供了丰富的API来读取、写入、修改和操作XML文档。相比于DOM,DOM4J更轻量级且易于...
7. **bis和dom4j读写xml文件.files**:这两个文件可能是辅助资源,如样式表或配置文件,用于增强HTML示例的展示效果,或者包含与DOM4J操作XML相关的其他信息。 掌握DOM4J对于Java开发者来说是非常有用的,因为它能...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及文档存储等领域。DOM4J是Java中一个非常流行的XML处理库,它提供了丰富的API来解析、创建、修改XML文档。本篇文章将...
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析...当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例
1. **配置文件处理**:许多Java应用使用XML配置,DOM4J可以方便地读取和修改这些配置。 2. **Web服务**:在处理SOAP或RESTful Web服务时,DOM4J用于解析和构建XML响应。 3. **数据交换**:在不同系统之间交换结构化...