- 浏览: 483849 次
- 性别:
- 来自: 武汉
最新评论
-
zyzyzy123:
请问有工程吗,我现在正在实现打电话的功能,但是一直不通,怀疑是 ...
实用的java 串口通信程序 -
wuhaitong:
引用[img][/img][*][url][/url] ...
jbpm -
迷糊_le:
maven命令, 蛮好的,谢谢
maven eclipse -
Wuaner:
不错的文章 , 谢谢分享!
Hadoop -
yuqihengsheng:
strong 很细
HighLighter
使用Digester解析XML文档示例
|
作者:未知 发布时间:2005-03-12 来源:JSP天空网
|
一. 概述 解析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> 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示例程序。 * <p> * @author walker( alker@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 ActionMapping代码清单由于过长这里就不给出了,请自行撰写,只要使其有三个属性: name,actionClass,requestPath以及他们的getter、setter方法和toString方法即可。 |
发表评论
-
安装和使用memcached
2014-04-16 16:24 641如何将 memcached 融入到 ... -
applicationContext.xml
2013-08-09 09:05 941<?xml version="1.0&quo ... -
注释驱动的 Spring cache 缓存介绍
2013-08-08 07:04 659概述 Spring 3.1 引入了激动人心的基于注释(an ... -
Spring2.5 Annotations
2013-08-08 06:33 854完成setXxxx功能,即配置文件的 <propert ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2013-08-07 23:21 1026本文将构建一个普通工程来说明spring注解缓存的使用方式, ... -
Ehcache 整合Spring 使用页面、对象缓存
2013-08-07 22:51 893Ehcache 整合Spring 使用页面、对象缓存 ... -
javassist教程和示例
2013-05-18 08:57 2008Javassist是一个执行字节 ... -
ZooKeeper官方文档
2013-05-16 17:09 1559介绍(源自ZooKeeper官方文档) 学习HBase过程 ... -
ZooKeeper -例子
2013-05-16 17:08 1206ZooKeeper ZooKeepe ... -
Spring整合Hessian访问远程服务
2013-05-15 13:44 853Spring整合Hessian访问远程服务 目录 1.1 ... -
redis
2013-05-14 11:44 767redis是一个key-value存储系统。和Memcach ... -
spring 资源访问
2013-05-13 08:26 996spring在java基础上封装了资源访问,简单易用。 R ... -
ZooKeeper——入门
2013-05-08 16:12 909ZooKeeper——入门 博客分类: ZooK ... -
分布式服务框架 Zookeeper -- 管理分布式环境中的数据(IBM)
2013-05-08 14:07 784安装和配置详解 本文 ... -
分布式协调服务---Zookeeper
2013-05-08 14:05 7741、Zookeeper overview Zookee ... -
Hibernate
2013-03-28 13:04 923一、简述 Hibernate 和 JD ... -
Apache+Tomcat集群配置详解
2013-02-01 10:52 890Apache + Tomcat集群配置详解(1) 一、 ... -
Apache+Jboss集群基于反向代理的负载均衡
2013-02-01 10:40 2490假设三台机器IP分别为172.29.128.100、172. ... -
spring + ibatis 多数据源事务(分布式事务)管理配置方法
2012-12-17 15:18 1265spring + ibatis 多数据源事务(分布式事务 ... -
Hessian序列化不设SerializerFactory性能问题
2012-10-31 09:47 1492Hessian序列化不设SerializerFactor ...
相关推荐
标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...
3. **解析 XML**:创建好 Digester 实例后,使用 `parse` 方法读取 XML 文件并执行预定义的规则。代码示例如下: ```java Digester digester = new Digester(); digester.setValidating(false); // 关闭验证,...
本文将深入探讨如何使用Digester解析XML文件,以及在实际项目中如何应用。 首先,让我们了解什么是Apache Commons Digester。这是一个Java库,它的主要功能是读取XML文件,并基于一系列预先定义的规则(Rule),...
这个"digester解析XML文件实例"是一个很好的学习资源,帮助开发者理解如何在实际项目中运用Digester。 首先,我们要了解Digester的基本工作原理。Digester通过定义一系列规则(Rules),当解析到XML文档中特定的...
**Digester** 是Apache Commons项目中的一个库,它专门用于解析XML文档,并基于规则将其转换为Java对象。Digester通过匹配XML元素结构来调用对象的方法或创建新对象,减少了手动解析XML的复杂性。这在配置驱动的Java...
这个“org.apache.commons.digester解析XML.rar”压缩包包含了一个测试工程,它演示了如何使用Digester库来解析XML文件并映射到Java对象上。下面将详细介绍这个库的功能、使用方法以及在实际开发中的应用。 1. **...
要使用Digester解析XML文档,首先需要创建一个 `org.apache.commons.digester.Digester` 类的实例,并配置必要的模式和规则,最后调用 `parse()` 方法。 以下是一个简单的示例代码: ```java import org.apache....
在示例代码中, DigesterDriver演示了如何配置 Digester来解析XML文件,创建`Catalog`对象并填充其`Book`和`Magazine`子对象,以及相关的`Article`对象。每个元素的属性通过`addBeanPropertySetter()`设置,而对象...
在Java开发中,Struts框架提供了一个强大的工具——Digester,用于解析XML文件并自动创建、配置Java对象。本文将详细介绍如何使用Digester处理具有嵌套结构的XML文档,并通过一个具体的实例——"DigesterXmlTest"来...
《digester解析XML详解》 在Java开发中,XML作为一种数据交换格式,广泛应用于配置文件、数据传输等场景。为了方便地将XML文档解析为Java对象,Apache组织提供了一个名为Digester的工具库,它允许开发者通过规则来...
**使用Digester解析XML并验证** 1. **设置 Digester 规则** 在使用Digester之前,我们需要定义一系列规则,告诉Digester在遇到XML文档的哪些元素时执行什么操作。这些规则通常涉及到创建新对象、设置对象属性或者...
《使用Digester解析XML的深度指南》 在Java开发中,处理XML文件是常见的任务,而Apache Commons Digester库提供了一种高效且便捷的方式来解析XML并将其映射到Java对象。本教程将深入探讨如何使用Digester来读取XML...
Digester的使用基于一系列预定义或自定义的规则,这些规则决定了XML文档的元素与Java对象之间的映射关系。当解析XML时,它会按照这些规则触发相应的Java代码执行,简化了从XML到业务逻辑的转换过程。学习 Digester,...
在Java代码中,我们需要加载`rule.xml`并应用它到Digester实例上,然后解析XML文件: ```java Digester digester = new Digester(); digester.setRulesLoader(new ClassPathResourceRulesLoader("rule.xml")); ...
值得注意的是,为了确保配置文件能够被正确地解析,XML文档配置文件必须使用DTD(Document Type Definition,文档类型定义),而DTD正是`xmlrules`包的一部分。 #### Digester与XML规则文件 在实际应用中,我们...
这个示例演示了如何使用Apache Commons Digester解析XML文件,将XML数据转换为Java对象。通过定义规则,我们可以轻松地处理复杂的XML结构,并将它们映射到Java对象模型中。这在处理大量配置数据或需要从XML文件加载...
以下是一个简单的示例,展示了如何使用Digester解析XML: ```java package mypackage; public class Foo { // ... (Foo类的属性和方法) } public class Bar { // ... (Bar类的属性和方法) } // XML文档片段: ...
4. **解析XML文件**:最后,通过调用`digester.parse()`方法来解析XML文件,并将解析结果填充到Java对象中。 #### 示例代码 以下是一个简化的`deregister`方法示例,展示了如何使用Digester从XML文件中读取图表...