|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
Java和XML是黄金组合,网上已有良多文章先容,XML作为电子商务中数据互换,已有其不成替换的感化,可是在平常体系开辟中,我们纷歧建都用到数据互换,是否是没法利用XML了?
固然不是,如今已有一个新趋向,Java程序的设置文件都入手下手利用XML格局,之前是利用相似Windows的INI格局(Java中也有Propertiesy如许的类专门处置如许的属性设置文件)。利用XML作为Java的设置文件有良多优点,从Tomcat的安拆卸置文件和J2EE的设置文件中,我们已看到XML的广泛使用,让我们也跟从盛行趋向用XML武装起来。
如今关头是怎样读取XML设置文件?有好几种XML剖析器:次要有DOM和SAX,在Apache的XML项目组中,今朝有XercesXalanCocoon几个开辟XML相干手艺的project.Tomcat自己利用的是Sun的JAXP,而其XSLTaglibproject中利用Xerces剖析器。
好了,下面都是对照烦人的实际成绩,仍是从速切进XML的设置文件的读取吧。
在我们的程序中,一般要有一些依据主机情况断定的变量。好比数据库会见用户名和暗码,分歧的主机大概设置纷歧样。只需变动XML设置文件,就能够一般运转。
myenv
datasource
dbhostlocalhost/dbhost
dbnamesqlname/dbname
dbuserusername/dbuser
dbpasswordpassword/dbpassword
/datasource
/myenv
下面这个myenv.xml设置文件通常为放在tomcat的WEB-INF/classes目次下。
我们体例一个Java程序间接读取,将dbhostdbuserdbpassword提掏出来供其他程序会见数据库用。
今朝利用SAX对照的多,与DOM次要区分是SAX是一行一行读取XML文件举行剖析,合适对照年夜文件,DOM是一次性读进内存,明显不克不及凑合年夜文件。这里我们利用SAX剖析,因为SAX剖析器不休在开展,网上有很多文章是针对老版本的。假如你利用JDK1.4,能够参考利用SAX处置XML文档一文。这里的程序是依据其改善而且经由理论调试得来的。
对下面myenv.xml读取的Java程序:
importorg.xml.sax.Attributes;
importorg.xml.sax.helpers.DefaultHandler;
importorg.xml.sax.SAXException;
importjava.util.Properties;
//利用DefaultHandler的优点
是不用摆设出一切办法,
publicclassConfigParser
extendsDefaultHandler
{
////界说一个Properties用来寄存
dbhostdbuserdbpassword的值
privatePropertiesprops;
privateStringcurrentSet;
privateStringcurrentName;
privateStringBuffer
currentValue=newStringBuffer();
//构建器初始化props
publicConfigParser()
{
this.props=newProperties();
}
publicPropertiesgetProps()
{
returnthis.props;
}
//界说入手下手剖析元素的办法。
这里是将xxx中的称号xxx提掏出来。
publicvoidstartElement
(Stringuri,StringlocalName,
StringqName,Attributesattributes)
throwsSAXException
{
currentValue.delete(0,currentValue.length());
this.currentName=qName;
}
//这里是将xxx/xxx之间
的值到场到currentValue
publicvoidcharacters(char[]ch,
intstart,intlength)throwsSAXException
{
currentValue.append
(ch,start,length);
}
//在碰到/xxx停止后,
将之前的称号和值逐一对应保留在props中
publicvoidendElement(Stringuri,
StringlocalName,StringqName)
throwsSAXException
{
props.put(qName.toLowerCase(),
currentValue.toString().trim());
}
}
<p>
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|