我的xml文件代码:文件名:sys-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db-info>
<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
<url>jdbc:oracle:thin:@192.168.24.181:1521:BJPOWERNODE</url>
<user-name>drp1</user-name>
<password>drp1</password>
</db-info>
</config>
首先声明一下我在这只写读取过程中的简要原理,至于加上单例模式,这个自己可以加上,但是我写的是实现解析xml的原理。
这里只得到<driver-name>中的东西
SAX解析XML文档
package com.bjpowernode.drp.util;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* SAX实现读取配置文件
*
* */
public class testXML extends DefaultHandler{
private String tagValue;
public static void main(String[] args)
{
String filename = "src/sys-config.xml";
SAXParserFactory spf = SAXParserFactory.newInstance();
try
{
SAXParser saxParser = spf.newSAXParser();
saxParser.parse(new File(filename), new testXML());
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 在解释到一个开始元素时会调用此方法.但是当元素有重复时可以自己写算法来区分
*
*/
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
}
/**
* 在遇到结束标签时调用此方法
*/
public void endElement(String uri, String localName, String qName) throws SAXException
{
if(qName=="driver-name"){
System.out.println(tagValue);
}
}
/**
* 所有的XML文件中的字符会放到ch[]中
*/
public void characters(char ch[], int start, int length)
throws SAXException
{
tagValue=new String(ch,start,length).trim();
}
}