使用Digester解析XML文档示例(zz from l_walker)

本文介绍了如何使用Apache的Digester库解析XML文档,它简化了解析过程,最初在Struts中出现,现在独立成为Jakarta项目。示例包括安装配置、所需依赖以及XML文件和解析代码的详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Digester解析XML文档示例

l_walker 2003-5-2

关键字:xml,digester,解析

内容摘要:

     本文简要介绍和示例了使用Apache的Digester来解析XML文档的方法。

 

1.     概述

解析XML文档方面有不少的方法,也有不少的工具包可用,这里介绍的是来自Apache Jakarta的Digester,使用其解析XML文件非常方便而不需要过多的关心底层的具体解析过程。

Digester最早出现在Struts中,后来随着Struts的发展以及其的公用性而被提到commens中独自立项,其底层实现的是SAX解析。当前版本为:1.5

2.     正文

1.  安装与配置

使用Digester需要如下几个软件包:

  Digester ,BeanUtils, Collections, Commens-Logging,还有一个遵循SAX(Simple API for XML)2.0或JAXP(Java API for XML Parsing) 1.1规范的XML解析器,如Xerces。相关下载地址见附录。如果需要使用log4j做为日志输出,则亦请下载之。

 

  将下载来的zip包解压,并将其中的jar文件拷贝到你的工程文件的lib目录中,并在工程classpath中包含上述jar文件的路径。

 

        在您工程的类目录(如classes)新建一commons-logging.properties文件,内容为:

        org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4Jlogger

  这表明系统将使用log4j做为日志输出,再建一log4j.proerties文件,内容请参看log4j文档或其他参考资料。

 

2.  XML文件

在工程目录下新建一个XML文件,示例使用module.xml,内容见下:

 

   

   

        Skyhome

        the web site system of www.skyinn.org

        2.0.1

        l_wakler

        walker@skyinn.org

        2003-04-30

   

 

   

   

       

            requestPath="/Home"

            actionClass="org.skyinn.action.GlobalAction">

       

 

       

            requestPath="/Forum"

            actionClass="org.skyinn.action.ForumAction">

       

   

 

 

 

 

3.  解析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示例程序。

 *

 * @author walker(walker@skyinn.org)

 *

 * 参考文献:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freeknightlcw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值