首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> XML >> XMLBeans >> 正文

Digester解析XML文档Sample

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

File:org.skyinn.quasar.config.SampleDigester

* Inculde:SampleDigester

* Modify Records

* Date Author Content

* =============================================================

* 2003-5-1 walker create class

* ============================================================*/

package org.skyinn.quasar.config;

import org.apache.commons.digester.Digester;

import org.xml.sax.SAXException;

import org.skyinn.quasar.action.ActionMapping;

import java.io.IOException;

/**

* Digester解析XML示例程序。

* <p>

* @author walker(walker@skyinn.org)

* <p>

* <strong>参考文献:</strong><p>

* <a href="http://www.onjava.com/pub/a/onjava/2002/10/23/digester.html" target="_blank">Learning and Using Jakarta Digester</a><p>

* <a href="http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=33259&pageNO=1" target="_blank">用Digester简化XML配置文件处理</a>

*/

public class SampleDigester{

private String configFile;

public void setConfigFile(final String configFile){

this.configFile = configFile;

}

/**

* 开始解析。

* <p>

* 在本方法,new一个Digester的实例,并将本类(SampleDigester)的实例压入

*Digester的处理堆栈,调用Digester的addCallMethod方法将XML文件中的特定

*节点与处理方法联系起来,并吊桶addCallParam方法设置参数,随后解析给定的XML

*文件。

* @throws IOException IO异常

* @throws SAXException SAX异常

*/

public void run() throws IOException, SAXException{

//新建Digester实例

Digester digester = new Digester();

// This method pushes this (SampleDigester) class to the Digesters

// object stack making its method s available to processing rules.

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);

// This method starts the parsing of the document.

digester.parse(this.configFile);

}//end run()

/**

* 添加模块信息。

* <p>

* 本方法仅将XML文件中的内容简单输出,实际应用中可以将获得的信息进行进一步的处理。

*

* @param name 名字

* @param description 描述

* @param version 版本

* @param author 作者

* @param mail EMAIL

* @param updateTime 更新时间

*/

public void addModuleInfo(final String name,

final String description,

final String version,

final String author,

final String mail,

final String updateTime){

//output

System.out.println("name=" + name + ",description=" + description

+ ",version=" + version + ",author=" + author

+ ",mail=" + mail + ",updateTime=" +updateTime);

}//end addModuleInfo()

/**

* 添加Action映射。

* <p>

* 本方法仅简单输出了传入的ActionMapping的信息,在具体应用中可将其加入系统Action映射集合中。

* @param actionMapping Action映射

*/

public void addActionMapping(final ActionMapping actionMapping){

System.out.println(actionMapping);

}

public static void main(String[] args){

SampleDigester sd = new SampleDigester();

sd.setConfigFile("module.xml");

try{

sd.run();

sd = null;

}catch(Exception e){

e.printStackTrace();

}

//__________________________________________

//演示另一种解析方法

Digester digester = new Digester();

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(Exception e){

e.printStackTrace();

}

}//end main()

}//EOC SampleDigester

【责编:Luzi】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航