SAXReader读取配置

package com.npnets.tools;

import java.io.InputStream;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.npnets.bean.JdbcConfig;
/**
 * 1、单例类只能有一个实例
 * 2、单例类必须自己自己创建自己的唯一实例
 * 3、单例类必须给所有其他对象提供这一实例
 * 
 * 解析oracle-config.xml文件 
 * 
 * 
 * @author zhang
 *
 */
public class XmlConfigReader {
    //懒汉式单例设计模式(延迟加载lazy)
    private static XmlConfigReader instance = null;
    //保持jdbc相关配置
    private JdbcConfig jdbcConfig =new JdbcConfig();

    private XmlConfigReader(){
        //以sax方式读取
        SAXReader reader = new SAXReader();
        //拿到当前线程,装在xml
        InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("oracle-config.xml");
        try {
            //用reader接收输入流,然后返回document,document对应着xml文件
            Document doc = reader.read(in);
            /**
             * xml中的数据都在Element中
             */
            //oracle驱动
            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/username");
            Element passwodElt = (Element) doc.selectObject("config/db-info/password");
            //webservice端口号与ip地址     port and ip address
            Element hdccserviceip = (Element) doc.selectObject("config/agent-info/hdccserviceip");
            Element hdccserviceport = (Element) doc.selectObject("config/agent-info/hdccserviceport");

            Element web800ip = (Element) doc.selectObject("config/web800-info/web800ip");
            Element web800port = (Element) doc.selectObject("config/web800-info/web800port");


            //设置数据库属性值
            jdbcConfig.setDriverName(driverNameElt.getStringValue());
            jdbcConfig.setUrl(urlElt.getStringValue());
            jdbcConfig.setUsername(usernameElt.getStringValue());
            jdbcConfig.setPassword(passwodElt.getStringValue());
            //设置webservice port and ip address
            jdbcConfig.setHdccserverip(hdccserviceip.getStringValue());
            jdbcConfig.setHdccserverport(hdccserviceport.getStringValue());
            jdbcConfig.setWeb800ip(web800ip.getStringValue());
            jdbcConfig.setWeb800port(web800port.getStringValue());
            System.out.println(jdbcConfig.getDriverName());
            System.out.println(jdbcConfig.getUrl());
            System.out.println(jdbcConfig.getUsername());
            System.out.println(jdbcConfig.getPassword());

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    //synchronized(同步关键字)是一个锁,有互斥的作用。一个进程调用的时候,其他的只能等着 
    public static  XmlConfigReader getInstance(){
        if(instance==null){
            instance = new XmlConfigReader();
        }
        return instance;
    }
    //返回jdbc相关配置
    public JdbcConfig getJdbcConfig(){
        return jdbcConfig;
    }

    //测试读取oracle-config.xml成功与否
    /*public static void main(String[] args) {
        JdbcConfig  jd = XmlConfigReader.getInstance().getJdbcConfig();
        System.out.println(jd.toString());
    }*/
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值