仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 887|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:Digester剖析XML文档Sample

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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,这个工具是微软写的,。
蒙在股里 该用户已被删除
沙发
发表于 2015-1-21 11:10:05 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
因胸联盟 该用户已被删除
板凳
发表于 2015-2-2 22:04:17 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-5 01:02:19 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
若天明 该用户已被删除
5#
发表于 2015-2-11 00:17:26 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
山那边是海 该用户已被删除
6#
发表于 2015-3-1 18:35:53 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-10 22:00:12 | 只看该作者
是一种使用者不需花费很多时间学习的语言
金色的骷髅 该用户已被删除
8#
发表于 2015-3-12 09:58:13 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
柔情似水 该用户已被删除
9#
发表于 2015-3-13 03:09:53 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-18 20:42:43 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
深爱那片海 该用户已被删除
11#
发表于 2015-3-26 13:49:15 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
再见西城 该用户已被删除
12#
发表于 2015-3-27 08:57:27 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
若相依 该用户已被删除
13#
发表于 2015-3-27 10:11:22 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
活着的死人 该用户已被删除
14#
发表于 2015-3-31 06:52:50 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
愤怒的大鸟 该用户已被删除
15#
发表于 2015-4-3 04:07:30 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
莫相离 该用户已被删除
16#
发表于 2015-4-6 20:11:11 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
飘灵儿 该用户已被删除
17#
发表于 2015-4-9 00:45:49 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
精灵巫婆 该用户已被删除
18#
发表于 2015-4-19 06:51:31 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
只想知道 该用户已被删除
19#
发表于 2015-4-20 11:26:43 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
20#
发表于 2015-4-26 01:10:28 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 20:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表