`

Digester

 
阅读更多

最近留意到了一个解析xml的库,作为标记记录一下,以下是链接地址:

http://aga.iteye.com/blog/218587

http://jinguo.iteye.com/blog/210781

在学习Tomcat的源码中整理第15章节digester库的介绍如下:

Digester库学习和使用
### Digester ###
一个规则定义了Digester遇到特别的模式的时候必须做的动作。
一个规则用org.apache.commons.digester.Rule类。
Digester类包括零个或多个Rule对象。
在一个Digester实例中,规则及其模式被存储在接口org.apache.commons.digester.Rules
定义的类型中。每一次给Digester实例添加规则,都将Rule对象添加到Rules对象。
#####  Rule #####
在Rule中有两个方法:begin方法和end方法。
当解析一个XML文档的时候,
遇到开始元素,Digester实例调用Rule对象的begin方法,
而遇到结束元素的时候调用stop方法。
###########################################################################
1.创建对象
如果想让Digester给特定的规则创建对象,可以调用它的addObjectCreate方法。
该方法有四个实现,其中两个最常用方法的签名如下:
public void addObjectCreate(java.lang.String pattern, java.lang.Class clazz)
public void addObjectCreate(java.lang.String pattern, java.lang.String className)
方法addObjectCreate的另外两个实现允许在XML文档中定义类名,
而不是通过作为方法参数。
这个特性带来了强大的功能,它使得类名可以在运行时决定,下面是这两个方法的签名:
public void addObjectCreate(java.lang.String pattern, java.lang.String className, java.lang.String attributeName)
public void addObjectCreate(java.lang.String pattern, java.lang.String attributeName, java.lang.Class clazz)
在这两个实现中,attributeName参数定义了XML文档中的属性,名字由className指定
2.设置属性
另一个重要的方法是addSetProperties,
Digester对象可以通过它设置对象属性。该方法的一个实现的签名如下:
public void addSetProperties(java.lang.String pattern)
3.方法调用
Digester允许通过添加规则,见到相应的模式的时候就调用栈最高层中对象的方法。
该方法名为addCallMethod,它的一个实现的签名如下:
public void addCallMethod (java.lang.String pattern, java.lang.String methodName)
4.建立对象间的联系(addSetNext)
Digester实例有一个栈用来临时存储对象。
当调用addObjectCreate创建对象后,将对象压入堆栈中。
可以把堆栈想象成一口井,可以将对象放入到井中,而pop方法相当于取出井中最上边的元素。
当通过addObjectCreate方法创建两个对象的时候,第一个对象被放入井中,然后是第二个。
addSetNext用于建立第一个对象和第二个对象之间的关系,它把第二个对象作为参数传递给第一个对象。
下面是addSetNext方法的签名:
public void addSetNext(java.lang.String pattern, java.lang.String methodName)
参数pattern定义了触发该规则的模式,methodName参数是是第一个对象要被调用的方法名。
该模式的形式如firstObject/secondObject。
5.验证XML文档
可以使用Digester来对XML文档的结构进行验证,
一个XML文档是否合法取决于由Digester定义的validating属性,该属性的默认值为false。
方法setValidating用来用来设置是否要验证XML文档,该方法的签名如下:
 public void setValidating(boolean validating)
 如果想要验证XML文档,可以传递一个true值给该方法。
-------------------------------------------------------------------------------------------------------------------------------------

1.使用SAX解析xml文档中的对象:org.xml.sax.InputSource

File file = File对象

InputSource is = new InputSource("file://" + file.getAbsolutePath());
FileInputStream fis = new FileInputStream(file);
is.setByteStream(fis);

这样 is对象已经具有xml文档的所有内容了。

分享到:
评论

相关推荐

    commons-digester3-3.2-API文档-中英对照版.zip

    赠送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

    `commons-digester.jar`是Apache Commons项目中的一个组件,主要功能是解析XML文档并根据预定义的规则自动创建和填充Java对象。这个组件在Java应用程序中尤其有用,特别是那些需要从XML配置文件中构建复杂对象层次...

    commons-digester-2.1.jar

    `commons-digester-2.1.jar` 是Apache Commons项目中的一个组件,主要负责XML文档的解析和对象的创建与绑定。Apache Commons Digester库提供了一种规则驱动的方法来解析XML文档,并根据预定义的规则将XML数据映射到...

    利用commons-digester解析xml

    标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...

    digester用法测试案例

    Digester是Apache软件基金会的Jakarta项目中的一个实用工具库,它主要用来解析XML文档,并根据预定义的规则自动创建和配置Java对象。这个工具在处理XML到Java对象映射时,极大地简化了代码,避免了手动解析XML的繁琐...

    Castor、digester实例

    Castor和Digester是两个在Java开发中用于对象与XML数据之间进行映射的库,它们简化了XML数据的解析和对象的序列化过程。在本文中,我们将深入探讨这两个库,以及如何通过实例来使用它们。 首先,让我们了解Castor。...

    Digester java解析xml

    Java中的Digester库是Apache Commons项目的一部分,它提供了一种方便的方式来解析XML文档,并将解析结果映射到Java对象模型上。这个库特别适合于创建简单的XML到Java对象的映射,而不需要编写大量的手动解析代码。在...

    org.apache.commons.digester解析XML.rar

    Apache Commons Digester是一个Java库,专门用于将XML文档解析成对象结构。这个“org.apache.commons.digester解析XML.rar”压缩包包含了一个测试工程,它演示了如何使用Digester库来解析XML文件并映射到Java对象上...

    commons-digester3-3.2-API文档-中文版.zip

    赠送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; 包含翻译后...

    Digester读取xml教程.rar

    《使用Digester解析XML的深度指南》 在Java开发中,处理XML文件是常见的任务,而Apache Commons Digester库提供了一种高效且便捷的方式来解析XML并将其映射到Java对象。本教程将深入探讨如何使用Digester来读取XML...

    digester组件简化了xml文件处理操作

    ### Digester组件简化XML文件处理操作 #### 一、引言 随着Web技术的发展,XML作为数据交换格式的重要性日益凸显。然而,对于大型且复杂的XML文档进行解析与处理时,传统的方法如DOM(Document Object Model)和SAX...

    Digester两种解析方式

    在Java开发中,Apache Commons Digester是一个非常有用的库,它允许开发者通过XML配置来实例化、配置和关联Java对象。 Digester提供了两种主要的解析方式,即规则硬编码和独立的规则文件,这两种方法各有其特点和...

    Digester解析XML的小例子(对象嵌套)

    在Java开发中,Struts框架提供了一个强大的工具——Digester,用于解析XML文件并自动创建、配置Java对象。本文将详细介绍如何使用Digester处理具有嵌套结构的XML文档,并通过一个具体的实例——"DigesterXmlTest"来...

    使用Apache_Commons_Digester

    ### 使用Apache Commons Digester开发指南 #### 概述 Apache Commons Digester 是一款基于 Java 的开源库,专门用于简化 XML 文件解析的过程。它利用 SAX(Simple API for XML)解析器来解析 XML 数据,并通过一...

    Jakarta-Common-Digester使用笔记

    Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...

    commons-digester-1.8.1-API文档-中英对照版.zip

    赠送jar包:commons-digester-1.8.1.jar; 赠送原API文档:commons-digester-1.8.1-javadoc.jar; 赠送源代码:commons-digester-1.8.1-sources.jar; 赠送Maven依赖信息文件:commons-digester-1.8.1.pom; 包含...

    xml解析commons-digester的demo

    Apache Commons Digester是Java中一个强大的工具,它提供了方便的方式来解析XML文档,并将解析出的数据绑定到Java对象上,实现对象的自动创建和初始化。本示例将详细介绍如何使用Apache Commons Digester进行XML解析...

    digester解析xml必备包.rar

    这个“digester解析xml必备包.rar”包含了三个关键的jar包,它们是实现Digester功能所必需的。 1. **commons-logging-1.2.jar**:这是Apache Commons Logging库的版本1.2。它提供了一个抽象层,允许开发者使用多种...

    commons-digester-1.7.zip

    Commons Digester是一个强大的Java库,它允许开发人员根据XML文档中的模式规则来创建和操作对象。这个"commons-digester-1.7.zip"文件包含了Apache Commons Digester库的1.7版本,这是一个广泛用于处理XML到Java对象...

Global site tag (gtag.js) - Google Analytics