动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.敏捷开发的必要技巧:处理不合适.
.JAVA程序的性能优化.
.WebSphere Enterprise Scheduler.
.教你如何编写Java类(二).
.事件监听器: 将JavaBeans接通起来.
.Eclipse插件的外挂安装方法.
.谈谈J2SE中的序列化(三).
.Struts教程-Struts的几个精细之.
.一些无聊的代码之一:JAVA中的日.
.JBoss Eclipse IDE&nb.
.透过Java参数来改善Java效能.
.实战角度比较EJB2和EJB3的异同.
.安装 WebSphere 应用服务器全攻略.
.MVC 设计模式:将 Web 应用分三层.
.Java中的浮点数分析.
.Jakarta Commons Digester 简介和.
.Java读取文件中含有中文的解决办.
.组织SWT/JFace控件的利器:Layout.
.JML起步--使用JML改进你的Java程.
.Struts1.1b3部分源代码分析..

Digester 解析 XML 文档 Sample

发表日期:2008-1-5 |



  解析XML文档
  Digester的使用相当简单,请参看如下的SampleDigester类中的注释,这里不再拗述:
  
  /*============================================================
  
  * Copyright:www.skyinn.org (c) 2002 - 2003 All rights reserved.
  
  * 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
上一篇:XML和Java:一个强大的组合 人气:347
下一篇:创造一种迅速而又随性的XML解释器 人气:451
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号