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对象设置给工厂类.