digester



1. public void addSetProperties(java.lang.String pattern,
java.lang.String attributeName,
java.lang.String propertyName) pattern 所要匹配的模式 如: "person/address/"
attributeName 指定所匹配的标签的的属性名称 如:
<address city="深圳"></address> 中的city.
propertyName 同xml文档做映射的javabean的属性名称, 如: Address.java 中的 city.
这个方法有很多种重载的实现,但它所做的事情实际是一样的.
找到相匹配的标签,然后通过,attributeName来得到值,并设置给相映射的javabean的名称为propertyName的属性.

注: 很多情况下,大家都会用public void addSetProperties(java.lang.String pattern) 版本的重载,它将自动把标签的属性值,设置给同它的属性名相关的javabean的属性.

2. public void addObjectCreate(java.lang.String pattern,
java.lang.Class clazz)

pattern 所要匹配的模式 如: "person/address/"
clazz 当匹配模式被成功匹配时所要求创建的类的class对象. 如: Address.class

当Digester类调用这个方法后,在遇到<address>标签时, 会根据clazz对象通过反射机制来创建一个对象,并把它放进digester内部维护的一个栈中.

注: Digester 类维护了一个org.apache.commons.collections.ArrayStack的实例,每当创建一个对象时,就把对象压到栈中.并在解析结束时,清理这个栈.

3. public void addSetNext(java.lang.String pattern,
java.lang.String methodName,
java.lang.String paramType)

pattern 所要匹配的模式 如: "person/friend/"
methodName 所要调用的方法名 如"addFriend".
paramType addFriend 方法,所需要的参数名称 如"com.zhengzm.prj.digester.ch3.pojo.Friend"
这个方法的意思是, 当遇到<friend> 标签时, 以新创建的Friend对象做为参数,调用Person类的addFriend方法.

4. public void addCallMethod(java.lang.String pattern,
java.lang.String methodName,
int paramCount)
pattern 所要匹配的模式 如: "person/friend/"
methodName 所要调用的方法名 如"setName".

paramCount 此方法的参数个数(注意:这个地方如果把参数的个类设置成0,则说明,这个方法调用来一个参数,并且这个参数的值是匹配标签中body的值)
例如.
<friend>
7upCat
</friend>

则. addCallMethod("friend/","setName",0) 的意思就是当遇到<friend>标签时,以"7upCat"为参数来调用Friend对象的setName方法.


5 public void addFactoryCreate(java.lang.String pattern,
java.lang.String className)

pattern 所要匹配的模式 如: "person/"

className 工厂类的全限定名称.
这个工厂类实际上是指实现了org.apache.commons.digester.ObjectCreationFactory接口的类.

这个方法的意思是,当遇到匹配的标签时,通过调用工厂类的createObejct 方法,Digester对象将返回的对象存放在它自己维护的栈中.并且会自动调用工厂类的setDigester()方法,把Digester对象设置给工厂类.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值