Chinaunix首页 | 论坛 | 博客
  • 博客访问: 616357
  • 博文数量: 718
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 13:24
文章分类

全部博文(718)

文章存档

2011年(1)

2008年(717)

我的朋友

分类:

2008-10-17 13:36:52


import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.SAXException;

import java.util.Properties;

//使用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() {

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());
}

}


--------------------next---------------------

 

import java.util.Properties;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.net.URL;

public class ParseXML{

//定义一个Properties 用来存放 dbhost dbuser dbpassword的值
private Properties props;

//这里的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();

//得到配置文件myenv.xml所在目录. tomcat中是在WEB-INF/classes
//下例中BeansConstants是用来存放xml文件中配置信息的类,可以自己代替或定义
URL confURL = BeansConstants.class.getClassLoader().getResource(filename);

try
{
//将解析器和解析对象myenv.xml联系起来,开始解析
parser.parse(confURL.toString(), handler);
//获取解析成功后的属性 以后 我们其他应用程序只要调用本程序的props就可以提取出属性名称和值了
props = handler.getProps();
}finally{
factory=null;
parser=null;
handler=null;
}

}

}


--------------------next---------------------

阅读(278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~