登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

love3400wind的blog

like

 
 
 

日志

 
 
 
 

java 解析XML  

2009-03-09 15:52:12|  分类: IT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.创建XML样本:

<?xml version="1.0" encoding="UTF-8"?>
<data>
 <datasource>
  <servername>192.168.18.254</servername>
  <serverport>1521</serverport>
  <databasename>GIS</databasename>
  <username>GP</username>
  <password>GP</password>
 </datasource>
</data>

 

2.XML配置文件解析器

package com;
/*
* XML配置文件解析器,主要目的,是为做前期工作
*/
import java.util.Properties;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ConfigParser extends DefaultHandler {
 // 定义一个properties用来存放属性
 private Properties props;

 private String currentName;

 private StringBuffer currentValue = new StringBuffer();

 public ConfigParser() {
  this.props = new Properties();
 }

 public Properties getProps() {
  return this.props;
 }

 // 这里是将xml中元素值加入currentValue
 public void characters(char[] ch, int start, int length)
   throws SAXException {

  currentValue.append(ch, start, length);
 }

 // 在遇到</xx>时,将之间的字符存放在props中间
 public void endElement(String uri, String localName, String name)
   throws SAXException {
  props.put(currentName.toLowerCase(), currentValue.toString().trim());
 }

 // 定义开始解析元素的方法,这里将<xx>中的名称xx提出来,
 public void startElement(String uri, String localName, String qName,
   Attributes attributes) throws SAXException {
  currentValue.delete(0, currentValue.length());
  currentName = qName;
 }

 // 
}

3.XML配置文件计取处理

package com;
/*
* XML配置文件计取处理
*/
import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

public class ParseXML {
 // 定义一个Proerties用来存放属性值
 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;
  }
 }

}

 

4.读取XML配置文件

package com;

/*
 * 读取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");
 }

 public String getServerPort() {
  return props.getProperty("serverport");
 }

 public String getDatabaseName() {
  return props.getProperty("databasename");

 }

 public String getUserName() {
  return props.getProperty("username");

 }

 public String getPassword() {
  return props.getProperty("password");
 }

}

5.数据库连接加测试数据库连接加测试数据库连接加测试

package com;

/*
 *
 * 数据库连接加测试数据库连接加测试数据库连接加测试
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection {
 private Connection con;

 private DBConnection() {

 }

 public static DBConnection newInstance() {
  return new DBConnection();
 }

 public Connection getConnection() {
  // jdbc:oracle:thin:@192.168.18.254:1521:GP
  // jdbc:oracle:thin:@192.168.18.254:7001/GP

  ReadConfigXml r = new ReadConfigXml("src/mysql.xml");
  String url = "jdbc:oracle:thin:@" + r.getServerName() + ":"
    + r.getServerPort() + ":" + r.getDatabaseName();
  String username = r.getUserName();
  String password = r.getPassword();
  // System.out.println(url);
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   con = DriverManager.getConnection(url, username, password);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();

  } catch (SQLException e) {
   e.printStackTrace();
  }
  return con;
 }

 // 测试连接
 public static void main(String args[]) {
  DBConnection dbc = new DBConnection();
  System.out.println("****" + dbc.getConnection());
  Connection con = DBConnection.newInstance().getConnection();
  System.out.println("测试成功!" + con);
  try {
   System.out.println("=====" + con);
   Statement state = con.createStatement();
   String sql = "select count(*) from sys_user";
   ResultSet rs = state.executeQuery(sql);
   if (rs.next()) {
    System.out.println(rs.getInt(1));
   }
   rs.close();
   state.close();
   con.close();
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}

  评论这张
 
阅读(618)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018