|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,xml在比来的一个MIS项目中,为了不硬编码,我必要把一些设置信息写在一个设置文件中.思索到是J2EE项目,J2EE的设置文件
仿佛都是xml文件了,再用传统ini文件是否是有点后进了?
ok,就用xml做设置文件吧.
我的设置文件reportenv.xml以下,对照复杂:
<?xmlversion="1.0"encoding="utf-8"?>
<reportenv>
<datasource>
<username>sqlname</username>
<password>password</password>
</datasource>
</reportenv>
如今的成绩是我用甚么来读取设置信息?
如今盛行的是dom4j和sax,我之前一向用dom4j.但是weblogicworkshop自带的是sax,我又不想再引进包了,因而就是sax吧.
第一步:ConfigParser.java
/*
*CreateDate:2005-6-13
*CreateBy:板桥里人
*purpose:xml设置文件属性读取器
*/
packagecom.infoearth.report;
importorg.xml.sax.Attributes;
importorg.xml.sax.helpers.DefaultHandler;
importorg.xml.sax.SAXException;
importjava.util.Properties;
publicclassConfigParserextendsDefaultHandler{
////界说一个Properties用来寄存属性值
privatePropertiesprops;
privateStringcurrentSet;
privateStringcurrentName;
privateStringBuffercurrentValue=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());
}
}
第二步:ParseXML.java
/*
*CreateDate:2005-6-13
*CreateBy:板桥里人李春雷修正
*purpose:xml设置文件属性读取器(通用),
*/
packagecom.infoearth.report;
importjava.util.Properties;
importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;
importjava.net.URL;
publicclassParseXML{
//界说一个Properties用来寄存属性值
privatePropertiesprops;
publicPropertiesgetProps(){
returnthis.props;
}
publicvoidparse(Stringfilename)throwsException{
//将我们的剖析器对象化
ConfigParserhandler=newConfigParser();
//猎取SAX工场对象
SAXParserFactoryfactory=SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
//猎取SAX剖析
SAXParserparser=factory.newSAXParser();
try{
//将剖析器息争析对象xml接洽起来,入手下手剖析
parser.parse(filename,handler);
//猎取剖析乐成后的属性
props=handler.getProps();
}finally{
factory=null;
parser=null;
handler=null;
}
}
}
第三步:ReadConfigXml.java
/*
*CreateDate:2005-6-13
*CreateBy:李春雷
*purpose:xml设置文件属性读取器
*/
packagecom.infoearth.report;
importjava.util.Properties;
publicclassReadConfigXml
{
privatePropertiesprops;
publicReadConfigXml(Stringurl){
ParseXMLmyRead=newParseXML();
try{
myRead.parse(url);
props=newProperties();
props=myRead.getProps();
}catch(Exceptione){
e.printStackTrace();
}
}
publicStringgetUserName(){
returnprops.getProperty("username");
}
publicStringgetPassWord(){
returnprops.getProperty("password");
}
}
ok,弄定了,读取的时分以下:
ReadConfigXmlxmlread=newReadConfigXml("reportenv.xml");
Stringusername=xmlread.getUserName();
Stringpassword=xmlread.getPassWord();
前两个类完成了xml文档属性设置的恣意读取.只需是xml的属性值,都读到了property中,你只需在property中提取就能够了.
第三个类是我针对我的xml文件写的,仿佛有点过剩.呵呵.实在有难言之隐.由于不想过量的修改之前的程序架构,就画蛇添
足了一下.
别的,感激j道,感激板桥里人.
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。 |
|