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


你可能感兴趣的:(java,apache,xml)