国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Digester 解析 XML 文檔 Sample

2019-11-18 12:47:53
字體:
供稿:網(wǎng)友

  解析xml文檔
  Digester的使用相當(dāng)簡單,請參看如下的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>參考文獻(xiàn):</strong><p>
  
  * <a target="_blank">Learning and Using Jakarta Digester</a><p>
  
  * <a target="_blank">用Digester簡化XML配置文件處理</a>
  
  */
  
  public class SampleDigester{
  
  PRivate String configFile;
  
  public void setConfigFile(final String configFile){
  
  this.configFile = configFile;
  
  }
  
  /**
  
  * 開始解析。
  
  * <p>
  
  * 在本方法,new一個Digester的實(shí)例,并將本類(SampleDigester)的實(shí)例壓入
  
  *Digester的處理堆棧,調(diào)用Digester的addCallMethod方法將XML文件中的特定
  
  *節(jié)點(diǎn)與處理方法聯(lián)系起來,并吊桶addCallParam方法設(shè)置參數(shù),隨后解析給定的XML
  
  *文件。
  
  * @throws IOException IO異常
  
  * @throws SAXException SAX異常
  
  */
  
  public void run() throws IOException, SAXException{
  
  //新建Digester實(shí)例
  
  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文件中的節(jié)點(diǎn)路徑:<quasar_module><module_info>...
  
  *addModuleInfo為本類中的一個方法(見下),即當(dāng)碰到<quasar_module><module_info>節(jié)點(diǎn)時
  
  *調(diào)用addModuleInfo方法,6表示該方法用六個參數(shù),
  
  */
  
  digester.addCallMethod("quasar_module/module_info", "addModuleInfo", 6);
  
  //逐個設(shè)置參數(shù),第一個參數(shù)的索引為0
  
  digester.addCallParam("quasar_module/module_info/name", 0);
  
  digester.addCallParam("quasar_module/module_info/descr  
  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文件中的內(nèi)容簡單輸出,實(shí)際應(yīng)用中可以將獲得的信息進(jìn)行進(jìn)一步的處理。
  
  *
  
  * @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的信息,在具體應(yīng)用中可將其加入系統(tǒng)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 );
  
  //生成本類實(shí)例
  
  digester.addObjectCreate( "quasar_module/action_mappings", SampleDigester.class);
  
  //生成ActionMapping實(shí)例
  
  digester.addObjectCreate("quasar_module/action_mappings/action",ActionMapping.class);
  
  //獲取屬性值,并將其存入ActionMapping實(shí)例
  
  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");
  
  //調(diào)用SampleDigester的addActionMapping方法
  
  digester.addSetNext("quasar_module/action_mappings/action","addActionMapping");
  
  try{
  
  digester.parse("module.xml");
  
  }catch(Exception e){
  
  e.printStackTrace();
  
  }
  
  }//end main()
  
  }//EOC SampleDigester

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 钦州市| 巴中市| 南乐县| 莲花县| 兴安盟| 延津县| 平果县| 合水县| 永兴县| 永平县| 永春县| 扶沟县| 微山县| 阜阳市| 潞城市| 资阳市| 新乡市| 迁西县| 堆龙德庆县| 三亚市| 东阿县| 镇坪县| 仪征市| 扶风县| 枣强县| 临海市| 文山县| 郓城县| 栾川县| 昌图县| 大庆市| 五台县| 通州区| 永仁县| 茶陵县| 新兴县| 崇礼县| 宝山区| 荔波县| 黄龙县| 明星|