|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。xml剖析XML文档
Digester的利用相称复杂,请参看以下的SampleDigester类中的正文,这里不再拗述:
/*============================================================
*Copyright:www.skyinn.org(c)2002-2003Allrightsreserved.
*File:org.skyinn.quasar.config.SampleDigester
*Inculde:SampleDigester
*ModifyRecords
*DateAuthorContent
*=============================================================
*2003-5-1walkercreateclass
*============================================================*/
packageorg.skyinn.quasar.config;
importorg.apache.commons.digester.Digester;
importorg.xml.sax.SAXException;
importorg.skyinn.quasar.action.ActionMapping;
importjava.io.IOException;
/**
*Digester剖析XML示例程序。
*<p>
*@authorwalker(walker@skyinn.org)
*<p>
*<strong>参考文献:</strong><p>
*<ahref="http://www.onjava.com/pub/a/onjava/2002/10/23/digester.html"target="_blank">LearningandUsingJakartaDigester</a><p>
*<ahref="http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=33259&pageNO=1"target="_blank">用Digester简化XML设置文件处置</a>
*/
publicclassSampleDigester{
privateStringconfigFile;
publicvoidsetConfigFile(finalStringconfigFile){
this.configFile=configFile;
}
/**
*入手下手剖析。
*<p>
*在本办法,new一个Digester的实例,并将本类(SampleDigester)的实例压进
*Digester的处置仓库,挪用Digester的addCallMethod办法将XML文件中的特定
*节点与处置办法接洽起来,并吊桶addCallParam办法设置参数,随后剖析给定的XML
*文件。
*@throwsIOExceptionIO非常
*@throwsSAXExceptionSAX非常
*/
publicvoidrun()throwsIOException,SAXException{
//新建Digester实例
Digesterdigester=newDigester();
//Thismethodpushesthis(SampleDigester)classtotheDigesters
//objectstackmakingitsmethodsavailabletoprocessingrules.
digester.push(this);
/*quasar_module/module_info为XML文件中的节点路径:<quasar_module><module_info>...
*addModuleInfo为本类中的一个办法(见下),即当碰着<quasar_module><module_info>节点时
*挪用addModuleInfo办法,6暗示该办法用六个参数,
*/
digester.addCallMethod("quasar_module/module_info","addModuleInfo",6);
//逐一设置参数,第一个参数的索引为0
digester.addCallParam("quasar_module/module_info/name",0);
digester.addCallParam("quasar_module/module_info/description",1);
digester.addCallParam("quasar_module/module_info/version",2);
digester.addCallParam("quasar_module/module_info/author",3);
digester.addCallParam("quasar_module/module_info/mail",4);
digester.addCallParam("quasar_module/module_info/update_time",5);
//Thismethodstartstheparsingofthedocument.
digester.parse(this.configFile);
}//endrun()
/**
*增加模块信息。
*<p>
*本办法仅将XML文件中的内容复杂输入,实践使用中能够将取得的信息举行进一步的处置。
*
*@paramname名字
*@paramdescription形貌
*@paramversion版本
*@paramauthor作者
*@parammailEMAIL
*@paramupdateTime更新工夫
*/
publicvoidaddModuleInfo(finalStringname,
finalStringdescription,
finalStringversion,
finalStringauthor,
finalStringmail,
finalStringupdateTime){
//output
System.out.println("name="+name+",description="+description
+",version="+version+",author="+author
+",mail="+mail+",updateTime="+updateTime);
}//endaddModuleInfo()
/**
*增加Action映照。
*<p>
*本办法仅复杂输入了传进的ActionMapping的信息,在详细使用中可将其到场体系Action映照汇合中。
*@paramactionMappingAction映照
*/
publicvoidaddActionMapping(finalActionMappingactionMapping){
System.out.println(actionMapping);
}
publicstaticvoidmain(String[]args){
SampleDigestersd=newSampleDigester();
sd.setConfigFile("module.xml");
try{
sd.run();
sd=null;
}catch(Exceptione){
e.printStackTrace();
}
//__________________________________________
//演示另外一种剖析办法
Digesterdigester=newDigester();
digester.setValidating(false);
//天生本类实例
digester.addObjectCreate("quasar_module/action_mappings",SampleDigester.class);
//天生ActionMapping实例
digester.addObjectCreate("quasar_module/action_mappings/action",ActionMapping.class);
//猎取属性值,并将其存进ActionMapping实例
digester.addSetProperties("quasar_module/action_mappings/action","name","name");
digester.addSetProperties("quasar_module/action_mappings/action","requestPath","requestPath");
digester.addSetProperties("quasar_module/action_mappings/action","actionClass","actionClass");
//挪用SampleDigester的addActionMapping办法
digester.addSetNext("quasar_module/action_mappings/action","addActionMapping");
try{
digester.parse("module.xml");
}catch(Exceptione){
e.printStackTrace();
}
}//endmain()
}//EOCSampleDigester
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。 |
|