Java高級:怎樣讀取和處理XML的配置文件

來源:文萃谷 9.64K

Java高級:怎樣讀取和處理XML的配置文件呢?看了下面小編整理的內容你就知道怎麼解決您的問題了,希望對您有所幫助!更多內容請關注應屆畢業生考試網!

Java高級:怎樣讀取和處理XML的配置文件

在我們的程序中,通常要有一些根據主機環境確定的變量.比如數據庫訪問用户名和密碼,不同的主機可能設置不一樣.只要更改XML配置文件,就可以正常運行.

localhost

sqlname

username

password

上面這個配置文件一般是放在tomcat的WEB-INF/classes目錄下.

我們編制一個Java程序直接讀取,將dbhost dbuser dbpassword提取出來供其他程序訪問數據庫用.

目前使用SAX比較的多,與DOM主要區別是 SAX是一行一行讀取XML文件進行分析,適合比較大文件,DOM是一次性讀入內存,顯然不能對付大文件.這裏我們使用SAX解析,由於SAX解析器不斷在發展,網上有不少文章是針對老版本的.如果你使用JDK1.4 ,可以參考 使用SAX處理XML文檔 一文.這裏的程序是根據其改進並且經過實踐調試得來的.

對上面讀取的Java程序:

import ibutes;

import ultHandler;

import xception;

import erties;

//使用DefaultHandler的好處 是 不必陳列出所有方法,

public class ConfigParser extends DefaultHandler {

////定義一個Properties 用來存放 dbhost dbuser dbpassword的值

private Properties props;

private String currentSet;

private String currentName;

private StringBuffer currentValue = new StringBuffer();

//構建器初始化props

public ConfigParser() {

s = new Properties();

}

public Properties getProps() {

return s;

}

//定義開始解析元素的方法. 這裏是將中的名稱xxx提取出來.

public void startElement(String uri, String localName, String qName, Attributes attributes)

throws SAXException {

te(0, th());

entName =qName;

}

//這裏是將之間的值加入到currentValue

public void characters(char[] ch, int start, int length) throws SAXException {

nd(ch, start, length);

}

//在遇到結束後,將之前的名稱和值一一對應保存在props中

public void endElement(String uri, String localName, String qName) throws SAXException {

(werCase(), ring()());

}

}

上面的這個解析程序比較簡單吧? 其實解析XML就是這麼簡單.

現在我們已經將dbhost dbuser dbpassword的值localhost sqlname username password提取了出來.但是這只是在在解析器內部,我們的程序還不能訪問.需要再編制一個程序.

import erties;

import arser;

import arserFactory;

import ;

public class ParseXML{

//定義一個Properties 用來存放 dbhost dbuser dbpassword的'值

private Properties props;

熱門標籤