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对象设置给工厂类.
digester
最新推荐文章于 2021-03-03 23:18:47 发布