日期:2014-04-12 浏览次数:21118 次
一. 概述
解析XML文档方面有不少的方法,也有不少的工具包可用,这里引见的是来自Apache Jakarta的Digester,使用其解析XML文件非常方便而不需求过多的关怀底层的具体解析过程。
Digester最早出如今Struts中,后来随着Struts的发展以及其的公用性而被提到commens中独自立项,其底层实现的是SAX解析。当前版本为:1.5
二. 注释
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,内容见下:
<?xml version="1.0" encoding="gb2312" ?> <quasar_module> <!--模块信息--> <module_info> <name>Skyhome</name> <description>the web site system of www.skyinn.org</description> <version>2.0.1</version> <author>l_wakler</author> <mail>walker@skyinn.org</mail> <update_time>2003-04-30</update_time> </module_info> <!--Action映射信息--> <action_mappings> <action name="home" requestPath="/Home" actionClass="org.skyinn.action.GlobalAction"> </action> <action name="forum" requestPath="/Forum" actionClass="org.skyinn.action.ForumAction"> </action> </action_mappings> </quasar_module> |
/*============================================================ * 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("qu
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|