`
leadyu
  • 浏览: 52200 次
  • 性别: Icon_minigender_1
  • 来自: 广州,福州
文章分类
社区版块
存档分类
最新评论

Jwebap项目(二)——Digester项目的介绍

阅读更多
Digester是Jakarta 子项目Commons下的一个模块,支持基于规则的对任意XML文档的处理。Jwebap中采用它进行XML的加载。

Digester项目提供了非常友好的XML操作API,当XML结构改变时,只需要改变映射的规则,就可以完成代码的修改。

Digester项目提供了一个简单的例子
假定有两个JavaBean如下,分别为Person和Address

package mypackage;
public class Person {
  public void addAddress(Address address);
  public Iterator getAddress();
  public String getName();
  public void setName(String name);
}
public mypackage;
public class Address {
  public int getStreet();
  public void setStreet(String street);
  public String getCity();
  public void setCity(String city);
}

  用下面的xml文件进行配置

<Person name="yu.lide">
  <address>
      <type>business</type>
      <street>234 Maple Dr.</street>
      <city>Los Angeles</city>
      <state>CA</state>
      <zip>98765</zip>
      <country>USA</country>
    </address>
   <address>
      <type>business</type>
      <street>234 Maple Dr.</street>
      <city>Los Angeles</city>
      <state>CA</state>
      <zip>98765</zip>
      <country>USA</country>
    </address>
</Person>

Digester digester = new Digester();  
digester.setValidating(false); //不进行XML与相应的DTD的合法性验证 
//当遇到<Person>时创建一个mypackage.Person对象,并将其放在栈顶 
digester.addObjectCreate("Person", "mypackage.Person");
//根据<Person>元素的属性(attribute),对刚创建的Person对象的属性(property)进行设置 
digester.addSetProperties("Person");
//当遇到<Person>的子元素<address>时创建一个mypackage.Address对象,并将其放在栈顶。 
digester.addObjectCreate("Person/Address", "mypackage.Address"); 
//根据<Address>元素的属性(attribute),对刚创建的Address对象的属性(property)进行设置
digester.addSetProperties("Person/Address");
//对<Address>元素的子标签包含的内容当成属性进行设置
digester.addSetNestProperties("Person/Address");
//当再次遇到<Person>的子元素<Address>时创建一个mypackage.Address对象,并将其放在栈顶,同时调用第二栈顶元素(Person对象)的addAddress方法。  
digester.addSetNext("Person/Address", "addAddress", "mypackage.Address");
Person person = (Person) digester.parse(); 


当然,也可以通过配置rule.xml规则定义文件,来定义每个对象的映射规则,配置语法也很简单

<digester-rules>
  <pattern value="address-book">
    <pattern value="person">
      <object-create-rule classname="Person"/>
      <set-properties-rule/>
      <set-next-rule methodname="addPerson"/>
      
      <pattern value="name">
        <call-method-rule methodname="setName" paramcount="0"/>
      </pattern>
      
      <pattern value="email">
        <call-method-rule methodname="addEmail" paramcount="2"/>  
        <call-param-rule paramnumber='0' attrname='type'/>
        <call-param-rule paramnumber='1'/>
      </pattern>
      
      <pattern value="address">
        <object-create-rule classname="Address"/>
        <set-nested-properties-rule/>
        <set-next-rule methodname="addAddress"/>
      </pattern>
    </pattern>
  </pattern>
</digester-rules>


是不是很好用?多的不说,赶快去下载一下,试试吧,非常简单
分享到:
评论
3 楼 javatar 2007-12-17  
基于规则的配置方案, 可以考虑作为组件的配置, 其实只要被配置的类符合JavaBean规范, 或者说IoC可注入性, 配置方案很容易更换的.
2 楼 bao110908 2007-12-11  
嗯,Digester本来是用于Struts配置解析的,大概比较好,就单独地把它给拿出来了吧。
1 楼 huangyh 2007-12-09  
这东西是非常不错,非常的方便,顶一个

相关推荐

    XML的解析之——使用Digester

    Digester 是Apache Commons项目的一部分,它提供了一种规则驱动的方法来处理XML文档。通过定义一系列的“消化”规则,我们可以让Digester自动创建和填充Java对象,从而避免手动解析XML的繁琐工作。这个过程通常包括...

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

    本文将详细介绍如何使用Digester处理具有嵌套结构的XML文档,并通过一个具体的实例——"DigesterXmlTest"来阐述其工作原理。 首先,我们需要理解Digester的基本概念。Digester是一个规则驱动的XML解析器,它通过...

    利用commons-digester解析xml

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

    用到digester项目,直接解析存入数据库

    标题中的“用到digester项目,直接解析存入数据库”指的是使用Apache Digester库来解析XML文件,并将解析后的数据直接存储到数据库中。Apache Digester是一个Java库,它允许开发者通过规则配置来关联XML文档的元素与...

    digester用法测试案例

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

    Digester

    Digester是Apache软件基金会下的Jakarta项目中的一个Java库,主要用于简化XML到Java对象的映射过程。在处理XML文档时,它通过匹配XML元素结构到相应的Java对象的方法调用,实现了XML解析的自动化。这个工具对于那些...

    Apache xml转换java对象 Digester

    #### 二、Apache Commons Digester简介 `Apache Commons Digester`是一个功能强大且易于使用的Java库,专门用于将XML文档解析并转换为Java对象。它支持通过规则集(Rules)来进行配置,这些规则集可以在代码中动态...

    commons-digester-2.1.jar

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

    Digester java解析xml

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

    digester3.2 源码

    首先,让我们探讨digester的核心概念——Rule。Rule是Digester框架的基础,它定义了XML元素如何影响Java对象。每个Rule实例代表一种特定的行为,如设置对象属性、创建新对象或调用对象方法。在解析XML时, Digester...

    commons-digester.jar

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

    浅析Digester

    **二、Digester的工作原理** 1. **配置规则**:首先,我们需要配置一组规则(Rule),这些规则定义了XML元素与Java对象方法之间的对应关系。例如,一个`&lt;employee&gt;`元素可能对应创建一个新的Employee对象,而`...

    Castor、digester实例

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

    Digester读取xml教程.rar

    要使用Digester,首先需要将其依赖添加到项目中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;commons-digester &lt;artifactId&gt;commons-digester &lt;version&gt;3.2 ``` 3. **基本...

    digester包

    本文将深入探讨digester包的原理、使用方法以及在实际项目中的应用。 首先,让我们了解什么是Apache Commons Digester。digester是一个开源Java库,它通过定义规则来解析XML文档,这些规则决定了当XML文档中的特定...

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

    #### 二、Digester组件概述 **Digester**是Apache Commons的一个子项目,用于简化XML文件的处理操作。该组件的核心设计理念是将XML文档转换为Java对象,这样开发者可以直接利用Java对象来进行数据操作,而无需关心...

    Digester两种解析方式

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

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

Global site tag (gtag.js) - Google Analytics