Chinaunix首页 | 论坛 | 博客
  • 博客访问: 543515
  • 博文数量: 855
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-16 19:08
文章分类

全部博文(855)

文章存档

2011年(1)

2008年(854)

我的朋友

分类:

2008-10-16 19:17:13

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示例程序。

*

* @author walker()

*

* 参考文献:

* Learning and Using Jakarta Digester

* 用Digester简化XML配置文件处理

*/

public class SampleDigester{

private String configFile;

public void setConfigFile(final String configFile){

this.configFile = configFile;

}

/**

* 开始解析。

*

* 在本方法,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文件中的节点路径:...

*addModuleInfo为本类中的一个方法(见下),即当碰到节点时

*调用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()

/**

* 添加模块信息。

*

* 本方法仅将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映射。

*

* 本方法仅简单输出了传入的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


--------------------next---------------------

阅读(188) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~