网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > Java&XML > XMLBeans > Digester解析XML文档Sample  

Digester解析XML文档Sample

2008-03-22  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

Digester的使用相当简单,请参看如下的SampleDigester类中的注释,这里不再拗述:

网管u家u.bitsCN.com

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

中国网管联盟bitsCN.com


TAGs
 上一篇:Java解析XML文档――dom解析xml   下一篇:没有了
Digester解析XML文档Sample 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: