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>
是不是很好用?多的不说,赶快去下载一下,试试吧,非常简单
分享到:
- 2007-12-04 22:40
- 浏览 2775
- 评论(3)
- 论坛回复 / 浏览 (3 / 3862)
- 查看更多
相关推荐
Eclipse中成功测试的Project 博文链接:https://shuanggeshi.iteye.com/blog/838087
digester
解析使用的xml文件在"参与者基础数据-4月.zip",sql语句就不贴了,如果是测试digester只需将dao层改一下,不要连接数据库,不同数据库创表好麻烦,如果需要存入数据库可以自行创建。
Castor、digester实例 Castor、digester实例 Castor、digester实例
用Digester開發的一個小程序。
Digester java解析xml jar包
首先Digester是什么,它是用来解析xml文件的的工具,是jakarta开源项目下commons的一个子项目,它能让程序员更方便的解析xml文件,而不需要了解底层的工作细节。 如果要使用Digester作为xml文件的解析,请到jakarta...
资源为Digester的xml解析应用案例,
赠送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文件的的工具,是jakarta开源项目下commons的一个子项目,它能让程序员更方便的解析xml文件,而不需要了解底层的工作细节。 Digester 解析xml文件 实例。
Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...
不错的解析XML的类,主要利用org.apache.commons.digester.Digester;
此为官网版本的commons-digester-2.1.jar maven中下载的commons-digester-2.1.jar无法使用
commons-digester-2.0.rar源文件及jar文件
digester3.2 源码 and digester3.2 application sample
Digester读取xml教程.rar
赠送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; 包含...
赠送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