Apache Digester应用实例.docx

上传人:b****5 文档编号:5771760 上传时间:2023-01-01 格式:DOCX 页数:11 大小:17.57KB
下载 相关 举报
Apache Digester应用实例.docx_第1页
第1页 / 共11页
Apache Digester应用实例.docx_第2页
第2页 / 共11页
Apache Digester应用实例.docx_第3页
第3页 / 共11页
Apache Digester应用实例.docx_第4页
第4页 / 共11页
Apache Digester应用实例.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Apache Digester应用实例.docx

《Apache Digester应用实例.docx》由会员分享,可在线阅读,更多相关《Apache Digester应用实例.docx(11页珍藏版)》请在冰豆网上搜索。

Apache Digester应用实例.docx

ApacheDigester应用实例

ApacheDigester应用实例

2011-04-2119:

33

前段时间项目中需要根据xml文件创建java对象,而apachecommons-digester是首选.

一直想把它写下来,可是总有点懒这次介绍一下digester的常用法,其他更高级的使用方法请参阅digesterdoc(由于比较忙,下次有时间写一篇关于cglib的常用法,呵呵)

ApacheDigester应用实例

一.序

 Digester是apache的一个组件apachecommons-digester.jar,通过它可以很方便的从xml文件生成java对象.你不用再象以前通过jdom或者Xerces去读取一个document对象.(jdom和Xerces仍然有它们的用武之地及强大之处,在其它应用里你也少不了它们)

我只是用一个例子展示一下如何把xml文件生成一个javaobject.

首先你必须把jar加入到你的项目classpath.

(一)准备:

1.环境:

Eclipse,jdk1.4+

2.需求说明:

学院包含学生和老师,学生可以选修课程,老师有不同的资格认证。

3.JavaClass的定义,简洁起见,略去import内容。

4.使用Digester生成java对象必须要定义一个xml文件,此xml文件必须符合digester-rules.dtd的规则。

5.所有的xml文件必须在classpath路径中,这样可以通过Class.getClassLoader().getInputStream()读取xml文件。

(二)提要:

 本示例所需的javaclass和xml文件分成四类:

1.基础xml文件:

[academy.xml]:

你将要解析的xml文件.

2.基础javaclass:

[Academy.java,Teacher.java,Student.java,Cousre.java]:

生成的对象的类定义

3.digesterRules.xml:

[academyRules.xml]:

定义了基础xml文件到基础javaclass的匹配(映射)关系

4.Digesterclass:

[DigestXMLJavaAcademy.java]:

根据digesterRules.xml去解析基础xml文件,并生成java对象

(三)参考资料

  1.Englishebook:

ProJakartaCommonsbyHarshadOak Apress2004

二.基础JavaClass

1.学院classAcademy.java

Java代码

publicclassAcademy{  

   privateVectorstudents;  

   privateVectorteachers;  

   privateStringname;  

 

   publicAcademy(){  

       students=newVector();  

       teachers=newVector();  

   }  

 

   publicvoidaddStudent(Studentstudent){  

       students.addElement(student);  

   }  

 

   publicvoidaddTeacher(Teacherteacher){  

       teachers.addElement(teacher);  

   }  

 

   publicVectorgetStudents(){  

       returnstudents;  

   }  

 

   publicvoidsetStudents(VectornewStudents){  

       students=newStudents;  

   }  

   publicVectorgetTeachers(){  

       returnteachers;  

   }  

 

   publicvoidsetTeachers(VectornewTeachers){  

       teachers=newTeachers;  

   }  

 

   publicStringgetName(){  

       returnname;  

   }  

 

   publicvoidsetName(StringnewName){  

       name=newName;  

   }  

publicclassAcademy{

   privateVectorstudents;

   privateVectorteachers;

   privateStringname;

   publicAcademy(){

       students=newVector();

       teachers=newVector();

   }

   publicvoidaddStudent(Studentstudent){

       students.addElement(student);

   }

   publicvoidaddTeacher(Teacherteacher){

       teachers.addElement(teacher);

   }

   publicVectorgetStudents(){

       returnstudents;

   }

   publicvoidsetStudents(VectornewStudents){

       students=newStudents;

   }

   publicVectorgetTeachers(){

       returnteachers;

   }

   publicvoidsetTeachers(VectornewTeachers){

       teachers=newTeachers;

   }

   publicStringgetName(){

       returnname;

   }

   publicvoidsetName(StringnewName){

       name=newName;

   }

}

============================================================

2.学生Student.java

Java代码

publicclassStudent{  

   privateVectorcourses;  

   privateStringname;  

   privateStringdivision;  

 

   publicStudent(){  

       courses=newVector();  

   }  

 

   publicvoidaddCourse(Coursecourse){  

       courses.addElement(course);  

   }  

 

   publicStringgetName(){  

       returnname;  

   }  

   publicvoidsetName(StringnewName){  

       name=newName;  

   }  

 

   publicStringgetDivision(){  

       returndivision;  

   }  

 

   publicvoidsetDivision(StringnewDivision){  

       division=newDivision;  

   }  

 

   publicvoidsetCourses(Vectorcourses){  

       this.courses=courses;  

   }  

 

   publicVectorgetCourses(){  

       returncourses;  

   }  

publicclassStudent{

   privateVectorcourses;

   privateStringname;

   privateStringdivision;

   publicStudent(){

       courses=newVector();

   }

   publicvoidaddCourse(Coursecourse){

       courses.addElement(course);

   }

   publicStringgetName(){

       returnname;

   }

   publicvoidsetName(StringnewName){

       name=newName;

   }

   publicStringgetDivision(){

       returndivision;

   }

   publicvoidsetDivision(StringnewDivision){

       division=newDivision;

   }

   publicvoidsetCourses(Vectorcourses){

       this.courses=courses;

   }

   publicVectorgetCourses(){

       returncourses;

   }

}

============================================================

3.老师Teacher.java

Java代码

publicclassTeacher{  

   privateStringname;  

   privateVectorcertifications;  

 

   publicTeacher(){  

       certifications=newVector();  

   }  

 

   publicvoidaddCertification(Stringcertification){  

       certifications.addElement(certification);  

   }  

 

   publicStringgetName(){  

       returnname;  

   }  

 

   publicvoidsetName(StringnewName){  

       name=newName;  

   }  

 

   publicvoidsetCertifications(Vectorcertifications){  

       this.certifications=certifications;  

   }  

 

   publicVectorgetCertifications(){  

       returncertifications;  

   }  

publicclassTeacher{

   privateStringname;

   privateVectorcertifications;

   publicTeacher(){

       certifications=newVector();

   }

   publicvoidaddCertification(Stringcertification){

       certifications.addElement(certification);

   }

   publicStringgetName(){

       returnname;

   }

   publicvoidsetName(StringnewName){

       name=newName;

   }

   publicvoidsetCertifications(Vectorcertifications){

       this.certifications=certifications;

   }

   publicVectorgetCertifications(){

       returncertifications;

   }

}

============================================================

4.课程Course.java

Java代码

publicclassCourse{  

   privateStringid;  

   privateStringname;  

 

   publicCourse(){  

   }  

 

   publicStringgetId(){  

       returnid;  

   }  

 

   publicvoidsetId(StringnewId){  

       id=newId;  

   }  

   publicStringgetName(){  

       returnname;  

   }  

 

   publicvoidsetName(StringnewName){  

       name=newName;  

   }  

publicclassCourse{

   privateStringid;

   privateStringname;

   publicCourse(){

   }

   publicStringgetId(){

       returnid;

   }

   publicvoidsetId(StringnewId){

       id=newId;

   }

   publicStringgetName(){

       returnname;

   }

   publicvoidsetName(StringnewName){

       name=newName;

   }

}

三.基础XML文件

============================================================

学院academy.xml,包含了学生(包含了课程),老师

Java代码

xmlversion="1.0"?

>  

  

          

                   

                     C1  

                     JSP  

                   

                   

                     C2  

                     Servlets  

                   

          

          

                   

                     C3  

                     EJB  

                   

          

 

          

                 SCJP  

                 SCWCD  

          

          

                 OCP  

                 SCJP  

                 SCEA  

          

 

xmlversion="1.0"?

>

        

                 

                     C1

                     JSP

                 

                 

                     C2

                     Servlets

                 

        

        

                 

                     C3

                     EJB

                 

        

        

                 SCJP

                 SCWCD

        

        

                 OCP

                 SCJP

                 SCEA

        

============================================================

四.DigesterClass

DigestXMLJavaAcademy.java和academyRules.xml

其中academyRules.xml用来定义xml文件和java对象的匹配(映射)关系,格式要符合digester-rules.dtd格式约束

DigestXMLJavaAcademy.java根据academyRules.xml解析academy.xml文件并生成Academy对象.

============================================================

Java代码

1.academyRules.xml  

xmlversion="1.0"?

>  

  

   

       

      

      

          

          

 

          

              

            

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1