Apache Digester应用实例.docx
- 文档编号:5771760
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:11
- 大小:17.57KB
Apache Digester应用实例.docx
《Apache Digester应用实例.docx》由会员分享,可在线阅读,更多相关《Apache Digester应用实例.docx(11页珍藏版)》请在冰豆网上搜索。
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"?
>
xmlversion="1.0"?
>
============================================================
四.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"?
>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Apache Digester应用实例 Digester 应用 实例