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;