Digester类用来将XML映射成Java类,简化XML的处理。它是Apache Commons库中的一个jar包:common-digester包
引用方式import org.apache.commons.digester.Digester;
Digester类通过模式(pattern)和规则来处理XML文档。其中的模式必须匹配XML元素,即XML文档树中的节点名和位置。Digester匹配模式的语法类似XPath的匹配模式,如模式catalog匹配最顶层<catalog>,模式catalog/book匹配<catalog>节点的子节点<book>。所有的匹配都是绝对路径,即所有的路径都是从根元素开始向下被指定的,有一个例外,几句是包含通配符"*"的匹配模式,如模式*/name将匹配XML文档中的任何<name>节点。
为了处理XML文档,需要建立一个org.apache.commons.digester.Digester类实例,并进行配置,指定相关的模式和规则,最后将XML文件的引用传入parse方法。
Digester的实现方式,依次读入XML文件,采用堆栈残存储实例,从父节点开始读入,创建父节点对应的实例压入堆栈,当读到结束标志时弹出堆栈,读到子节点,创建子节点对应实例压入堆栈,因此可以看出次栈顶实例是栈顶实例的父节点,同级的节点点之间没有关联关系。
以userdatabase.xml文件为例,说明Digester的常用方法
- <?xml version="1.0" encoding="UTF-8?>
- <database>
- <user userName="guest" password="guest">
- </user>
- </database>
<?xml version="1.0" encoding="UTF-8?> <database> <user userName="guest" password="guest"> </user> </database>
1.addObjectCreate(String rule,Class class)
设置节点与Java对象的映射规则,rule指定节点的筛选规则,class设置映射对象。SAX解析时,遇到rule指定的节节点,会创建一个class实例放入堆栈中。
比如:digester.addObectCreate("database/user","com.model.UserBean").解析遇到user节点时,会创建一个UserBean实例并放入堆栈中。
2.addSetProperties(String rule)
设置节点的属性设置规则。当解析遇到符合rule的节点时,根据属性列表中的属性值对,使用Java反射机制使用标准的JavaBean方法设置栈顶对象实例;
比如:digester.addSetProperties("database/user"),解析遇到user节点时,会获取键值对 userName=guest,password=guest,获得栈顶的UserBean对象,设置实例的userName、password属性;
3.addBeanPropertySetter(String rule)
该方法的作用及使用方法类似于addSetProperties,只不过它是用rule所指定的标签来调用对象的setter。
4.addSetNext(String rule,String methodName)
设置当前rule节点与父节点的调用规则,当遇到rule节点时,调用堆栈中的次栈顶元素调用methodName方法。将栈顶元素作为次顶元素指定方法的输入参数。
比如:digester.addSetNext("database/user","addUser"),调用database实例的addUser,user为参数
5.addCallMethod(String rule,String methodName,int paraNumber)
该方法同样设置对象的属性,但更加灵活,不需要对象具有setter
根据rule规则指定的属性,调用对象的methodName方法,paraNumber参数是表示方法需要的参数个数,当paraNumber=0时,可以单独使用,不然需要配合addCallParam方法
比如:digester.addCallMethod("database/user/uerName","setUserName",0);
6.addCallParam(String rule,int paraIndex,String attributeName)
该方法与addCallMethod配合使用,根据rule指定的标签属性来调用方法
paraIndex表明需要填充的方法形参序号,从0开始,方法由addCallMethdo指定,attributeName指定标签属性名;
使用注意事项:
1.Digester类调用的顺序,必须与XML数据文件绝对一致;
2.Digester类依赖于JavaBean规范,类必须符合规范;
3.XML文件中标签/属性的名称必须与Bean中的一致(包括大小写);
参考资料:
Apache Common Library:http://commons.apache.org
http://tech.it168.com/jd/2007-10-23/200710221641906_2.shtml
http://www.blogjava.net/tw-ddm/archive/2006/07/20/59299.html
http://blog.163.com/xubindehao@126/blog/static/10821904420094113254642/
http://www.blogjava.net/yql225521/articles/62212.html
相关推荐
Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...
【标题】:“Digester读取XML学习” 在Java开发中,处理XML文件是常见的任务,尤其是在构建配置驱动的应用程序时。Apache Commons Digester是一个强大的工具,它允许开发者将XML文件解析为Java对象,通过匹配XML...
《Digester学习详解》 Apache Digester 是一个用于解析XML文档并将其映射到Java对象的工具,尤其在处理配置文件或对象关系映射时,它能极大地简化工作流程。这个强大的工具允许开发者通过规则来定义XML元素如何映射...
Digester是Apache软件基金会下的Jakarta项目中的一个Java库,主要用于简化XML到Java对象的映射过程。在处理XML文档时,它通过匹配XML元素结构到相应的Java对象的方法调用,实现了XML解析的自动化。这个工具对于那些...
Castor和Digester是两个在Java开发中用于对象与XML数据之间进行映射的库,它们简化了XML数据的解析和...通过上述实例,你应该对如何使用Castor和Digester有了基本的理解,但要完全掌握它们,还需要进一步的实践和学习。
Digester是Apache软件基金会的Jakarta项目中的一个实用工具库,它主要用来解析XML文档,并根据预定义的规则自动创建和配置Java对象。这个工具在处理XML到Java对象映射时,极大地简化了代码,避免了手动解析XML的繁琐...
Java中的Digester库是Apache Commons项目的一部分,它提供了一种方便的方式来解析XML文档,并将解析结果映射到Java对象模型上。这个库特别适合于创建简单的XML到Java对象的映射,而不需要编写大量的手动解析代码。在...
Apache Commons Digester 是一个用于处理XML文档的Java库,它允许开发者通过定义一系列规则来将XML数据映射到Java对象的属性或者创建新的Java对象。这个库特别适用于配置文件的解析,因为它简化了从XML到Java对象...
赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar; 赠送源代码:commons-digester3-3.2-sources.jar; 赠送Maven依赖信息文件:commons-digester3-3.2.pom; 包含翻译后...
`commons-digester.jar`是Apache Commons项目中的一个组件,主要功能是解析XML文档并根据预定义的规则自动创建和填充Java对象。这个组件在Java应用程序中尤其有用,特别是那些需要从XML配置文件中构建复杂对象层次...
《digester深度解析》 Java世界中,XML作为数据交换和配置文件的常用格式,其解析和对象绑定是一项常见的任务。Apache Commons Digester是Apache软件基金会提供的一个强大的工具,专门用于将XML文档解析为Java对象...
标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式...通过深入学习和使用,可以提升开发效率,并更好地管理项目中的XML资源。
`commons-digester-2.1.jar` 是Apache Commons项目中的一个组件,主要负责XML文档的解析和对象的创建与绑定。Apache Commons Digester库提供了一种规则驱动的方法来解析XML文档,并根据预定义的规则将XML数据映射到...
《使用Digester解析XML的深度指南》 在Java开发中,处理XML文件是常见的任务,而Apache Commons Digester库提供了一种高效且便捷的方式来解析XML并将其映射到Java对象。本教程将深入探讨如何使用Digester来读取XML...
在Java开发中,Apache Commons Digester是一个非常有用的库,它允许开发者通过XML配置来实例化、配置和关联Java对象。 Digester提供了两种主要的解析方式,即规则硬编码和独立的规则文件,这两种方法各有其特点和...
通过研究`commons-digester3-3.0-src`源代码,开发者可以学习到XML解析的最佳实践,以及如何构建一个可扩展的、可定制化的XML处理框架。这对于任何希望提高Java XML处理技能的开发者来说都是宝贵的学习资源。
### Digester组件简化XML文件处理操作 #### 一、引言 随着Web技术的发展,XML作为数据交换格式的重要性日益凸显。然而,对于大型且复杂的XML文档进行解析与处理时,传统的方法如DOM(Document Object Model)和SAX...
本文将深入探讨如何使用Apache的 Digester 库来解析XML文档,这是一款强大的工具,能够将XML数据映射到Java对象,简化了处理XML的过程。 Digester 是Apache Commons项目的一部分,它提供了一种规则驱动的方法来处理...
《digester3.2源码解析与应用实例》 Apache Digester是一个强大的Java库,用于在XML文档和Java对象之间建立映射关系,通过规则来自动解析XML并创建或更新对象结构。在digester3.2版本中,我们能够深入理解其内部...