java读取xml文件中oracle数据库连接(sax)
//------------DataBaseConfig.xml
<data></data>
- <?xml version="1.0" encoding="UTF-8"?>
- <data>
- <datasource>
- <dataname>xf</dataname>
- <driver>oracle.jdbc.driver.OracleDriver</driver>
- <url>jdbc:oracle:thin:@localhost:1521:SID</url>
- <username>xiaofeng</username>
- <password>xiaofeng</password>
- </datasource>
- </data>
//---------------------ConfigParser.java
java 代码
- package zwf.xml;
- import java.util.Properties;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- class ConfigParser extends DefaultHandler {
- //定义一个Properties 用来存放属性值
- private Properties props;
- private String currentSet;
- private String currentName;
- private StringBuffer currentValue = new StringBuffer();
- // 构建器初始化props
- public ConfigParser() {
- this.props = new Properties();
- }
- public Properties getProps() {
- return this.props;
- }
- // 定义开始解析元素的方法. 这里是将中的名称xxx提取出来.
- public void startElement(String uri, String localName, String qName,
- Attributes attributes) throws SAXException {
- currentValue.delete(0, currentValue.length());
- this.currentName = qName;
- }
- // 这里是将之间的值加入到currentValue
- public void characters(char[] ch, int start, int length)
- throws SAXException {
- currentValue.append(ch, start, length);
- }
- // 在遇到结束后,将之前的名称和值一一对应保存在props中
- public void endElement(String uri, String localName, String qName)
- throws SAXException {
- props.put(qName.toLowerCase(), currentValue.toString().trim());
- }
- }
//-----------------ParseXML.java
java 代码
- package zwf.xml;
- import java.util.Properties;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- class ParseXML {
- // 定义一个Properties 用来存放属性值
- private Properties props;
- public Properties getProps() {
- return this.props;
- }
- public void parse(String filename) throws Exception {
- // 将我们的解析器对象化
- ConfigParser handler = new ConfigParser();
- // 获取SAX工厂对象
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setNamespaceAware(false);
- factory.setValidating(false);
- // 获取SAX解析
- SAXParser parser = factory.newSAXParser();
- try {
- // 将解析器和解析对象xml联系起来,开始解析
- parser.parse(filename, handler);
- // 获取解析成功后的属性
- props = handler.getProps();
- } finally {
- factory = null;
- parser = null;
- handler = null;
- }
- }
- }
//-----------------ReadConfigXml.java
java 代码
- package zwf.xml;
- import java.util.Properties;
- public class ReadConfigXml {
- private Properties props;
- public ReadConfigXml(String url) {
- ParseXML myRead = new ParseXML();
- try {
- myRead.parse(url);
- props = new Properties();
- props = myRead.getProps();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /*
- public String getServerName() {
- return props.getProperty("servername"); //getProperty("<标签名>"),与XML文档里标签名相关联
- } //另:标签名在这里使用时,统一为小写
- public String getServerPort(){
- return props.getProperty("serverport"); //getProperty("<标签名>"),与XML文档里标签名相关联
- }
- public String getDatabaseName() {
- return props.getProperty("databasename"); //getProperty("<标签名>"),与XML文档里标签名相关联
- }
- public String getUserName() {
- return props.getProperty("username"); //getProperty("<标签名>"),与XML文档里标签名相关联
- }
- public String getPassWord() {
- return props.getProperty("password"); //getProperty("<标签名>"),与XML文档里标签名相关联
- }
- */
- public String getDataName(){
- return props.getProperty("dataname");
- }
- public String getDriver(){
- return props.getProperty("driver");
- }
- public String getUrl(){
- return props.getProperty("url");
- }
- public String getUserName(){
- return props.getProperty("username");
- }
- public String getPassWord(){
- return props.getProperty("password");
- }
- }
//---------------------DBConnection.java
java 代码
- package zwf.xml;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import zwf.xml.ReadConfigXml;
- public class DBConnection {
- private Connection con;
- private DBConnection() {
- }
- public static DBConnection newInstance(){
- return new DBConnection();
- }
- /*
- public Connection getConnection(){
- ReadConfigXml r = new ReadConfigXml("mssql.xml"); //读取xml文件中数据库相关信息
- String url = "jdbc:microsoft:sqlserver://"+r.getServerName()+":"+r.getServerPort()
- +";DatabaseName="+r.getDatabaseName();
- String username = r.getUserName();
- String password = r.getPassWord();
- try {
- Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
- con = DriverManager.getConnection(url, username, password);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return con;
- }
- //测试连接
- public static void main(String args[]){
- Connection con = DBConnection.newInstance().getConnection();
- }
- */
- public static void main(String args[]){
- ReadConfigXml r = new ReadConfigXml("DataBaseConfig.xml"); //xml文件放到工程目录下
- System.out.println(r.getDataName());
- System.out.println(r.getDriver());
- System.out.println(r.getUrl());
- System.out.println(r.getUserName());
- System.out.println(r.getPassWord());
- }
- }