Java中XML配置文件的读取处理

Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了?

当然不是,现在已经有一个新趋势,Java程序的配置文件都开始使用XML格式,以前是使用类似Windows的INI格式(Java中也有Propertiesy这样的类专门处理这样的属性配置文件)。使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2EE的配置文件中,我们已经看到XML的普遍应用,让我们也跟随流行趋势用XML武装起来。

现在关键是如何读取XML配置文件?有好几种XML解析器:主要有DOM和SAX,在Apache的XML项目组中,目前有Xerces Xalan Cocoon几个开发XML相关技术的project.Tomcat本身使用的是Sun的JAXP,而其XSL Taglib project中使用Xerces解析器。

好了,上面都是比较烦人的理论问题,还是赶快切入XML的配置文件的读取吧。

在我们的程序中,通常要有一些根据主机环境确定的变量。比如数据库访问用户名和密码,不同的主机可能设置不一样。只要更改XML配置文件,就可以正常运行。

﹤myenv﹥
﹤datasource﹥
﹤dbhost﹥localhost﹤/dbhost﹥
﹤dbname﹥sqlname﹤/dbname﹥
﹤dbuser﹥username﹤/dbuser﹥
﹤dbpassword﹥password﹤/dbpassword﹥
﹤/datasource﹥
﹤/myenv﹥

上面这个myenv.xml配置文件一般是放在tomcat的WEB-INF/classes目录下。

我们编制一个Java程序直接读取,将dbhost dbuser dbpassword提取出来供其他程序访问数据库用。

目前使用SAX比较的多,与DOM主要区别是SAX是一行一行读取XML文件进行分析,适合比较大文件,DOM是一次性读入内存,显然不能对付大文件。这里我们使用SAX解析,由于SAX解析器不断在发展,网上有不少文章是针对老版本的。如果你使用JDK1.4 ,可以参考 使用SAX处理XML文档 一文。这里的程序是根据其改进并且经过实践调试得来的。

对上面myenv.xml读取的Java程序:

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﹥中的名称xxx提取出来。
public void startElement
(String uri, String localName,
String qName, Attributes attributes)
throws SAXException
{
currentValue.delete(0, currentValue.length());
this.currentName =qName;
}
//这里是将﹤xxx﹥﹤/xxx﹥之间
的值加入到currentValue
public void characters(char[] ch,
int start, int length) throws SAXException
{
currentValue.append
(ch, start, length);
}
//在遇到﹤/xxx﹥结束后,
将之前的名称和值一一对应保存在props中
public void endElement(String uri,
String localName, String qName)
throws SAXException
{
props.put(qName.toLowerCase(),
currentValue.toString().trim());
}
}

时间: 2024-08-07 01:54:26

Java中XML配置文件的读取处理的相关文章

XML配置文件的读取处理

xml XML配置文件的读取处理板桥里人 jdon.com 2002/2 Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了? 当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式.(Java中也有 Propertiesy这样的类专门处理这样的属性配置文件).使用XML作为Java的配置文件有很多好处,从To

研究 Java 中 XML 文档模型的特性和性能

xml|性能 Java 中的 XML: 文档模型,第一部分:性能 研究 Java 中 XML 文档模型的特性和性能 文档选项 将此页作为电子邮件发送 最新推荐 Java 应用开发源动力 - 下载免费软件,快速启动开发 级别: 初级 Dennis M. Sosnoski, 总裁, Sosnoski Software Solutions, Inc. 2001 年 9 月 01 日 在本文中,Java 顾问 Dennis Sosnoski 比较几个 Java 文档模型的性能和功能.当选择模型时,无法做

java-C#中将double值变成二进制然后写入文件,Java中载入该文件读取此二进制double值时不正确

问题描述 C#中将double值变成二进制然后写入文件,Java中载入该文件读取此二进制double值时不正确 目前已定位到是因为C#中的byte范围是0到255,而java中byte值为-128到127导致的错误. 尝试过使用C#的sbyte来解决: bw1 = new BinaryWriter(new FileStream("C:UsersDELLDesktopSpatialIndexctest1.bin", FileMode.Create)); bw2 = new BinaryW

java struts-struts.xml配置文件中如何获取session中的值

问题描述 struts.xml配置文件中如何获取session中的值 #session.memberName(这里我想要获取session中的值) 用户登录 放入session中代码: session.put("memberName", "张三");

XML配置文件的读取(sax)

xml   在最近的一个MIS项目中,为了避免硬编码,我需要把一些配置信息写在一个配置文件中.考虑到是J2EE项目,J2EE的配置文件好像都是xml文件了,再用传统ini文件是不是有点落伍了?ok,就用xml做配置文件吧.我的配置文件reportenv.xml如下,比较简单: <?xml version="1.0" encoding="utf-8"?><reportenv><datasource><username>s

Java中xml转json的问题,急急急

问题描述 那个..小弟想请教各位大牛一个问题..我今天在网上搜索java的xml转json的方法,后来看到http://www.oschina.net/code/snippet_436266_11970,我按照这个方法去做了,但是,转出的结果有一些问题,有的xml标签没有识别到,直接转换成了[],同样的xml在http://www.bejson.com/go.html?u=http://www.bejson.com/xml2json在线转的结果就很正确.例如:正确的:"Tax":{&q

Java中使用Apache POI读取word文件简单示例_java

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个 jar 包即可, 而 2007 版本(.docx)就麻烦多,我说的这个麻烦不

java中连接sql server2000 读取数据,在jsp中输出,超过1000条就出错

问题描述 后台java连接sqlserver2000取出数据超过大概4000多条记录,写入list在前台jsp中输出,到900多条的时候就出错了请教各位大虾如何解决?sqlserver2000的连接超时已经设置为0无限制.java.sql.SQLException:[Microsoft][SQLServer2000DriverforJDBC]Errorestablishingsocket.atcom.microsoft.jdbc.base.BaseExceptions.createExcepti

Java 中的 XML:使用 Castor 进行数据绑定

xml|数据 对于主要关心文档的数据内容的应用程序来说,Java 的 XML 数据绑定是 XML 文档模型的强大替代方案.在本文中,企业 Java 专家 Dennis Sosnoski 介绍了数据绑定并讨论了什么使它如此吸引人.然后他向读者展示了如何使用 Java 数据绑定的开放源代码 Castor 框架处理日益复杂的文档.如果您的应用程序关心 XML 的数据更甚于关心 XML 文档本身,您可能希望找出这个处理 Java 中 XML 的容易而又高效的方法.大多数处理应用程序中 XML 文档的方法