1、Apache Digester应用实例Apache Digester应用实例2011-04-21 19:33前段时间项目中需要根据xml文件创建java对象,而apache commons-digester是首选. 一直想把它写下来,可是总有点懒 这次介绍一下digester的常用法,其他更高级的使用方法请参阅digester doc(由于比较忙,下次有时间写一篇关于cglib的常用法,呵呵) Apache Digester应用实例 一.序 Digester是apache的一个组件 apache commons-digester.jar,通过它可以很方便的从xml文件生成java对象.你不用再
2、象以前通过jdom或者Xerces去读取一个document对象.(jdom和Xerces仍然有它们的用武之地及强大之处,在其它应用里你也少不了它们) 我只是用一个例子展示一下如何把xml文件生成一个java object. 首先你必须把jar加入到你的项目classpath. (一)准备: 1.环境: Eclipse, jdk1.4+ 2.需求说明:学院包含学生和老师,学生可以选修课程,老师有不同的资格认证。 3.Java Class的定义,简洁起见,略去import内容。 4.使用Digester生成java对象 必须要定义一个xml文件,此xml文件必须符合digester-rules.
3、dtd的规则。 5.所有的xml文件必须在classpath路径中,这样可以通过Class.getClassLoader().getInputStream()读取xml文件。 (二)提要: 本示例所需的java class 和 xml文件分成四类: 1.基础xml文件: academy.xml: 你将要解析的xml文件. 2.基础java class: Academy.java, Teacher.java, Student.java, Cousre.java: 生成的对象的类定义 3.digesterRules.xml: academyRules.xml: 定义了基础xml文件到基础java
4、class的匹配(映射)关系 4.Digester class: DigestXMLJavaAcademy.java: 根据digesterRules.xml去解析基础xml文件,并生成java 对象 (三)参考资料 1.English ebook: Pro Jakarta Commons by Harshad Oak Apress 2004 二.基础Java Class 1.学院 class Academy.java Java代码 public class Academy private Vector students; private Vector teachers; private St
5、ring name; public Academy() students = new Vector(); teachers = new Vector(); public void addStudent(Student student) students.addElement(student); public void addTeacher(Teacher teacher) teachers.addElement(teacher); public Vector getStudents() return students; public void setStudents(Vector newStu
6、dents) students = newStudents; public Vector getTeachers() return teachers; public void setTeachers(Vector newTeachers) teachers = newTeachers; public String getName() return name; public void setName(String newName) name = newName; public class Academy private Vector students; private Vector teache
7、rs; private String name; public Academy() students = new Vector(); teachers = new Vector(); public void addStudent(Student student) students.addElement(student); public void addTeacher(Teacher teacher) teachers.addElement(teacher); public Vector getStudents() return students; public void setStudents
8、(Vector newStudents) students = newStudents; public Vector getTeachers() return teachers; public void setTeachers(Vector newTeachers) teachers = newTeachers; public String getName() return name; public void setName(String newName) name = newName; = 2.学生 Student.java Java代码 public class Student priva
9、te Vector courses; private String name; private String division; public Student() courses = new Vector(); public void addCourse(Course course) courses.addElement(course); public String getName() return name; public void setName(String newName) name = newName; public String getDivision() return divis
10、ion; public void setDivision(String newDivision) division = newDivision; public void setCourses(Vector courses) this.courses = courses; public Vector getCourses() return courses; public class Student private Vector courses; private String name; private String division; public Student() courses = new
11、 Vector(); public void addCourse(Course course) courses.addElement(course); public String getName() return name; public void setName(String newName) name = newName; public String getDivision() return division; public void setDivision(String newDivision) division = newDivision; public void setCourses
12、(Vector courses) this.courses = courses; public Vector getCourses() return courses; = 3.老师 Teacher.java Java代码 public class Teacher private String name; private Vector certifications; public Teacher() certifications = new Vector(); public void addCertification(String certification) certifications.ad
13、dElement(certification); public String getName() return name; public void setName(String newName) name = newName; public void setCertifications(Vector certifications) this.certifications = certifications; public Vector getCertifications() return certifications; public class Teacher private String na
14、me; private Vector certifications; public Teacher() certifications = new Vector(); public void addCertification(String certification) certifications.addElement(certification); public String getName() return name; public void setName(String newName) name = newName; public void setCertifications(Vecto
15、r certifications) this.certifications = certifications; public Vector getCertifications() return certifications; = 4.课程 Course.java Java代码 public class Course private String id; private String name; public Course() public String getId() return id; public void setId(String newId) id = newId; public S
16、tring getName() return name; public void setName(String newName) name = newName; public class Course private String id; private String name; public Course() public String getId() return id; public void setId(String newId) id = newId; public String getName() return name; public void setName(String ne
17、wName) name = newName; 三.基础XML文件 = 学院 academy.xml,包含了学生(包含了课程),老师 Java代码 C1 JSP C2 Servlets C3 EJB SCJP SCWCD OCP SCJP SCEA C1 JSP C2 Servlets C3 EJB SCJP SCWCD OCP SCJP SCEA = 四.Digester Class DigestXMLJavaAcademy.java 和academyRules.xml 其中academyRules.xml用来定义xml文件和java对象的匹配(映射)关系,格式要符合digester-rules.dtd格式约束 DigestXMLJavaAcademy.java 根据academyRules.xml解析academy.xml文件并生成 Academy对象. = Java代码 1. academyRules.xml bean-prope
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1