| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
Digester的使用相当简单,请参看如下的SampleDigester类中的注释,这里不再拗述:
| File:org.skyinn.quasar.config.SampleDigester
* Inculde:SampleDigester 网管u家u.bitscn@com
* Modify Records 网管u家u.bitscn@com * Date Author Content 网管下载dl.bitscn.com * ============================================================= 网管论坛bbs_bitsCN_com * 2003-5-1 walker create class 网管u家u.bitsCN.com * ============================================================*/ 网管u家u.bitscn@com
package org.skyinn.quasar.config; 网管下载dl.bitscn.com import org.apache.commons.digester.Digester; 网管联盟bitsCN@com
import org.xml.sax.SAXException; 中国网管联盟bitsCN.com
import org.skyinn.quasar.action.ActionMapping; 网管网www_bitscn_com import java.io.IOException; 网管网www_bitscn_com /** 中国网管联盟bitsCN.com * Digester解析XML示例程序。 中国网管联盟bitsCN.com * <p> 网管网www.bitscn.com * @author walker(walker@skyinn.org) 网管bitscn_com * <p> 网管下载dl.bitscn.com * <strong>参考文献:</strong><p> 中国网管论坛bbs.bitsCN.com * <a href="http://www.onjava.com/pub/a/onjava/2002/10/23/digester.html" target="_blank">Learning and Using Jakarta Digester</a><p> 中国网管联盟bitsCN.com * <a href="http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=33259&pageNO=1" target="_blank">用Digester简化XML配置文件处理</a> 网管论坛bbs_bitsCN_com
*/ 网管联盟bitsCN@com public class SampleDigester{ 网管网www.bitscn.com private String configFile; 网管网www_bitscn_com public void setConfigFile(final String configFile){ 网管网www.bitscn.com this.configFile = configFile; 网管论坛bbs_bitsCN_com } 网管网www_bitscn_com /** 网管论坛bbs_bitsCN_com * 开始解析。 网管u家u.bitscn@com * <p> 网管联盟bitsCN_com * 在本方法,new一个Digester的实例,并将本类(SampleDigester)的实例压入 网管u家u.bitscn@com
*Digester的处理堆栈,调用Digester的addCallMethod方法将XML文件中的特定 网管联盟bitsCN@com
*节点与处理方法联系起来,并吊桶addCallParam方法设置参数,随后解析给定的XML 网管u家u.bitsCN.com *文件。 网管网www_bitscn_com
* @throws IOException IO异常 网管u家u.bitscn@com
* @throws SAXException SAX异常 网管联盟bitsCN_com */ 中国网管联盟bitsCN.com public void run() throws IOException, SAXException{ 网管网www_bitscn_com
//新建Digester实例 网管网www_bitscn_com Digester digester = new Digester(); 中国网管联盟bitsCN.com // This method pushes this (SampleDigester) class to the Digesters 网管u家u.bitscn@com // object stack making its method s available to processing rules. 中国网管论坛bbs.bitsCN.com digester.push(this); 网管u家u.bitsCN.com /*quasar_module/module_info为XML文件中的节点路径:<quasar_module><module_info>... 网管bitscn_com *addModuleInfo为本类中的一个方法(见下),即当碰到<quasar_module><module_info>节点时 网管网www_bitscn_com
*调用addModuleInfo方法,6表示该方法用六个参数, 网管u家u.bitscn@com
*/ 网管网www_bitscn_com digester.addCallMethod("quasar_module/module_info", "addModuleInfo", 6); 网管联盟bitsCN@com //逐个设置参数,第一个参数的索引为0 网管联盟bitsCN_com digester.addCallParam("quasar_module/module_info/name", 0); 网管u家u.bitsCN.com digester.addCallParam("quasar_module/module_info/description", 1); 网管联盟bitsCN@com
digester.addCallParam("quasar_module/module_info/version", 2); 中国网管论坛bbs.bitsCN.com
digester.addCallParam("quasar_module/module_info/author", 3); 网管bitscn_com digester.addCallParam("quasar_module/module_info/mail", 4); 网管网www.bitscn.com
digester.addCallParam("quasar_module/module_info/update_time", 5); 网管联盟bitsCN_com // This method starts the parsing of the document. 网管联盟bitsCN@com digester.parse(this.configFile); 网管u家u.bitsCN.com }//end run() 网管u家u.bitsCN.com
/** 网管下载dl.bitscn.com * 添加模块信息。 中国网管论坛bbs.bitsCN.com * <p> 网管bitscn_com * 本方法仅将XML文件中的内容简单输出,实际应用中可以将获得的信息进行进一步的处理。 中国网管联盟bitsCN.com * 网管下载dl.bitscn.com * @param name 名字 中国网管论坛bbs.bitsCN.com * @param description 描述 中国网管联盟bitsCN.com * @param version 版本 网管网www.bitscn.com * @param author 作者 中国网管论坛bbs.bitsCN.com * @param mail EMAIL 中国网管联盟bitsCN.com * @param updateTime 更新时间 网管论坛bbs_bitsCN_com */ 网管联盟bitsCN@com public void addModuleInfo(final String name, 网管u家u.bitscn@com
final String description, 网管u家u.bitsCN.com
final String version, 网管bitscn_com final String author, 网管论坛bbs_bitsCN_com final String mail, 网管论坛bbs_bitsCN_com final String updateTime){ 网管联盟bitsCN_com
//output 网管网www_bitscn_com
System.out.println("name=" + name + ",description=" + description 网管u家u.bitscn@com + ",version=" + version + ",author=" + author 网管联盟bitsCN_com + ",mail=" + mail + ",updateTime=" +updateTime); 网管u家u.bitsCN.com }//end addModuleInfo() 网管u家u.bitscn@com
/** 网管下载dl.bitscn.com * 添加Action映射。 中国网管联盟bitsCN.com * <p> 网管bitscn_com * 本方法仅简单输出了传入的ActionMapping的信息,在具体应用中可将其加入系统Action映射集合中。 网管论坛bbs_bitsCN_com
* @param actionMapping Action映射 网管bitscn_com */ 网管网www.bitscn.com public void addActionMapping(final ActionMapping actionMapping){ 网管网www.bitscn.com System.out.println(actionMapping); 网管u家u.bitscn@com } 中国网管论坛bbs.bitsCN.com public static void main(String[] args){ 中国网管论坛bbs.bitsCN.com SampleDigester sd = new SampleDigester(); 中国网管联盟bitsCN.com
sd.setConfigFile("module.xml"); 中国网管论坛bbs.bitsCN.com try{ 网管联盟bitsCN@com sd.run(); 网管联盟bitsCN@com sd = null; 中国网管联盟bitsCN.com }catch(Exception e){ 网管网www_bitscn_com
e.printStackTrace(); 网管u家u.bitsCN.com } 网管网www_bitscn_com //__________________________________________ 网管u家u.bitscn@com //演示另一种解析方法 网管u家u.bitsCN.com Digester digester = new Digester(); 网管联盟bitsCN@com digester.setValidating( false ); 网管论坛bbs_bitsCN_com //生成本类实例 网管u家u.bitscn@com digester.addObjectCreate( "quasar_module/action_mappings", SampleDigester.class); 网管u家u.bitscn@com //生成ActionMapping实例 中国网管联盟bitsCN.com digester.addObjectCreate("quasar_module/action_mappings/action",ActionMapping.class); 网管u家u.bitscn@com //获取属性值,并将其存入ActionMapping实例 网管联盟bitsCN_com digester.addSetProperties("quasar_module/action_mappings/action","name","name"); 网管bitscn_com digester.addSetProperties("quasar_module/action_mappings/action","requestPath","requestPath"); 网管联盟bitsCN@com digester.addSetProperties("quasar_module/action_mappings/action","actionClass","actionClass"); 网管论坛bbs_bitsCN_com
//调用SampleDigester的addActionMapping方法 中国网管论坛bbs.bitsCN.com digester.addSetNext("quasar_module/action_mappings/action","addActionMapping"); 网管网www.bitscn.com try{ 中国网管论坛bbs.bitsCN.com
digester.parse("module.xml"); 网管下载dl.bitscn.com
}catch(Exception e){ 中国网管论坛bbs.bitsCN.com e.printStackTrace(); 网管网www.bitscn.com } 网管网www.bitscn.com }//end main() 网管联盟bitsCN@com }//EOC SampleDigester 网管联盟bitsCN@com |
|
0
|
评论加载中…