Jakarta-Common-Digester使用笔记

Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用堆栈来保存xml节点(stack.push()方法),当该xml节点中嵌套的所有子节点解析完毕,该节点将被弹出(stack.pup()方法)。Digester最大的优点就是使用模式匹配来表示xml文件中节点之间的父子关系 。

代码如下:

students.xml

        Java Boy     JSP           Java Girl     EJB  

Model类:Student.java

package demo.javabean;public class Student ...{   private String name;   private String from;   private String course;   public String getName() ...{     return name;   }   public void setName(String name) ...{     this.name = name;   }   public String getFrom() ...{     return from;   }   public void setFrom(String from) ...{     this.from = from;   }   public String getCourse() ...{     return course;   }   public void setCourse(String course) ...{     this.course = course;   }}

Model类:StuClass.java

package demo.javabean;import java.util.Vector;public class StuClass ...{   private String name;   private Vector students = new Vector();   public String getName() ...{     return name;   }   public void setName(String name) ...{     this.name = name;   }   public Vector getStudents() ...{     return students;   }   public void setStudents(Vector students) ...{     this.students = students;   }   public void addStudent(Student student)...{     students.add(student);   }}

测试类:DigestStudents.java

package demo;import java.util.Vector;import org.apache.commons.digester.Digester;import demo.javabean.StuClass;public class DigestStudents ...{   Vector stuClass;   public DigestStudents() ...{     stuClass = new Vector();   }   public static void main(String[] args) ...{     DigestStudents digestStudents = new DigestStudents();     digestStudents.digest();   }   private void digest() ...{     try ...{       Digester digester = new Digester();       // Push the current object onto the stack       digester.setValidating(false);       // Creates a new instance of the Student class       digester.addObjectCreate("stuClass", "demo.javabean.StuClass");       digester.addSetProperties("stuClass", "name", "name");       digester.addObjectCreate("stuClass/student", "demo.javabean.Student");       // Uses setName method of the Student instance       // Uses tag name as the property name       // addCallMethod与addBeanPropertySetter等价       // 参数 0代表一个参数,默认就是当前读的数据,最后一个参数0表示参数个数       digester.addCallMethod("stuClass/student/name", "setName", 0);       digester.addSetProperties("stuClass/student/name", "from", "from");       // 加上一个属性名form       // digester.addBeanPropertySetter( "stuClass/student/name");       // Uses setCourse method of the Student instance       // Explicitly specify property name as 'course'       digester.addBeanPropertySetter("stuClass/student/course");       // Move to next student,addStudent为其中的一个方法       digester.addSetNext("stuClass/student", "addStudent",           "demo.javabean.Student");       StuClass ds = (StuClass) digester.parse(this.getClass()           .getClassLoader().getResourceAsStream(               "demo/students.xml"));       // Print the contents of the Vector       System.out.println("Students Vector " + ds.getName());       System.out.println("Students Vector " + ds.getStudents());     } catch (Exception ex) ...{       ex.printStackTrace();     }   }   // public void addStudent( Student stud ) {   // //Add a new Student instance to the Vector   // stuClass.add( stud );   // }}

每年的同一天和他庆祝生日,每年的情人节、圣诞节、除夕,

Jakarta-Common-Digester使用笔记

相关文章:

你感兴趣的文章:

标签云: