欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Apache Digester應用實(shí)例

前段時(shí)間項目中需要根據xml文件創(chuàng )建java對象,而apache commons-digester是首選.
一直想把它寫(xiě)下來(lái),可是總有點(diǎn)懶

這次介紹一下digester的常用法,其他更高級的使用方法請參閱digester doc(由于比較忙,下次有時(shí)間寫(xiě)一篇關(guān)于cglib的常用法,呵呵)
Apache Digester應用實(shí)例 [原創(chuàng )]
--------------利用 apache commons-digester 自動(dòng)根據xml文件創(chuàng )建java 對象
<day day up>
author: binker
email: binker_cao@163.com
date: 2006/12/16
note: 本文可以任意轉載,但請保持其完整性并注明來(lái)源,謝謝.

一.序
Digester是apache的一個(gè)組件 apachecommons-digester.jar,通過(guò)它可以很方便的從xml文件生成java對象.你不用再象以前通過(guò)jdom或者Xerces去讀取一個(gè)document對象.(jdom和Xerces仍然有它們的用武之地及強大之處,在其它應用里你也少不了它們)
我只是用一個(gè)例子展示一下如何把xml文件生成一個(gè)java object.
首先你必須把jar加入到你的項目classpath.
(一)準備:
1.環(huán)境: Eclipse, jdk1.4+
2.需求說(shuō)明:學(xué)院包含學(xué)生和老師,學(xué)生可以選修課程,老師有不同的資格認證。
3.Java Class的定義,簡(jiǎn)潔起見(jiàn),略去import內容。
4.使用Digester生成java對象 必須要定義一個(gè)xml文件,此xml文件必須符合digester-rules.dtd的規則。
5.所有的xml文件必須在classpath路徑中,這樣可以通過(guò)Class.getClassLoader().getInputStream()讀取xml文件。

(二)提要:
本示例所需的java class 和 xml文件分成四類(lèi):
1.基礎xml文件: [academy.xml]: 你將要解析的xml文件.
2.基礎java class: [Academy.java, Teacher.java, Student.java, Cousre.java]: 生成的對象的類(lèi)定義
3.digesterRules.xml: [academyRules.xml]: 定義了基礎xml文件到基礎java class的匹配(映射)關(guān)系
4.Digester class: [DigestXMLJavaAcademy.java]: 根據digesterRules.xml去解析基礎xml文件,并生成java 對象

(三)參考資料
1.English ebook: Pro Jakarta Commons by Harshad Oak Apress 2004

二.基礎Java Class
1.學(xué)院 class Academy.java

代碼
  1. public class Academy {  
  2.     private Vector students;  
  3.     private Vector teachers;  
  4.     private String name;  
  5.   
  6.     public Academy() {  
  7.         students = new Vector();  
  8.         teachers = new Vector();  
  9.     }  
  10.   
  11.     public void addStudent(Student student) {  
  12.         students.addElement(student);  
  13.     }  
  14.   
  15.     public void addTeacher(Teacher teacher) {  
  16.         teachers.addElement(teacher);  
  17.     }  
  18.   
  19.     public Vector getStudents() {  
  20.         return students;  
  21.     }  
  22.   
  23.     public void setStudents(Vector newStudents) {  
  24.         students = newStudents;  
  25.     }  
  26.     public Vector getTeachers() {  
  27.         return teachers;  
  28.     }  
  29.   
  30.     public void setTeachers(Vector newTeachers) {  
  31.         teachers = newTeachers;  
  32.     }  
  33.   
  34.     public String getName() {  
  35.         return name;  
  36.     }  
  37.   
  38.     public void setName(String newName) {  
  39.         name = newName;  
  40.     }  
  41. }  

============================================================
2.學(xué)生 Student.java
代碼
  1. public class Student {  
  2.     private Vector courses;  
  3.     private String name;  
  4.     private String division;  
  5.   
  6.     public Student() {  
  7.         courses = new Vector();  
  8.     }  
  9.   
  10.     public void addCourse(Course course) {  
  11.         courses.addElement(course);  
  12.     }  
  13.   
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.     public void setName(String newName) {  
  18.         name = newName;  
  19.     }  
  20.   
  21.     public String getDivision() {  
  22.         return division;  
  23.     }  
  24.   
  25.     public void setDivision(String newDivision) {  
  26.         division = newDivision;  
  27.     }  
  28.   
  29.     public void setCourses(Vector courses) {  
  30.         this.courses = courses;  
  31.     }  
  32.   
  33.     public Vector getCourses() {  
  34.         return courses;  
  35.     }  
  36. }  

============================================================
3.老師 Teacher.java
代碼
  1. public class Teacher {  
  2.     private String name;  
  3.     private Vector certifications;  
  4.   
  5.     public Teacher() {  
  6.         certifications = new Vector();  
  7.     }  
  8.   
  9.     public void addCertification(String certification) {  
  10.         certifications.addElement(certification);  
  11.     }  
  12.   
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.   
  17.     public void setName(String newName) {  
  18.         name = newName;  
  19.     }  
  20.   
  21.     public void setCertifications(Vector certifications) {  
  22.         this.certifications = certifications;  
  23.     }  
  24.   
  25.     public Vector getCertifications() {  
  26.         return certifications;  
  27.     }  
  28. }  

============================================================
4.課程 Course.java
代碼
  1. public class Course {  
  2.     private String id;  
  3.     private String name;  
  4.   
  5.     public Course() {  
  6.     }  
  7.   
  8.     public String getId() {  
  9.         return id;  
  10.     }  
  11.   
  12.     public void setId(String newId) {  
  13.         id = newId;  
  14.     }  
  15.     public String getName() {  
  16.         return name;  
  17.     }  
  18.   
  19.     public void setName(String newName) {  
  20.         name = newName;  
  21.     }  
  22. }  

三.基礎XML文件
============================================================
學(xué)院 academy.xml,包含了學(xué)生(包含了課程),老師
代碼
  1. <?xml version="1.0"?>  
  2. <academy name="JAcademy" >  
  3.          <student name="JavaBoy" division="A">  
  4.                   <course>  
  5.                       <id>C1</id>  
  6.                       <name>JSP</name>  
  7.                   </course>  
  8.                   <course>  
  9.                       <id>C2</id>  
  10.                       <name>Servlets</name>  
  11.                   </course>  
  12.          </student>  
  13.          <student name="JavaGirl" division="B">  
  14.                   <course>  
  15.                       <id>C3</id>  
  16.                       <name>EJB</name>  
  17.                   </course>  
  18.          </student>  
  19.   
  20.          <teacher name="JavaGuru">  
  21.                   <certification>SCJP</certification>  
  22.                   <certification>SCWCD</certification>  
  23.          </teacher>  
  24.          <teacher name="JavaMaster">  
  25.                   <certification>OCP</certification>  
  26.                   <certification>SCJP</certification>  
  27.                   <certification>SCEA</certification>  
  28.          </teacher>  
  29. </academy>  

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

四.Digester Class
DigestXMLJavaAcademy.java 和academyRules.xml
其中academyRules.xml用來(lái)定義xml文件和java對象的匹配(映射)關(guān)系,格式要符合digester-rules.dtd格式約束
DigestXMLJavaAcademy.java 根據academyRules.xml解析academy.xml文件并生成 Academy對象.
============================================================

代碼
  1. 1. academyRules.xml  
  2. <?xml version="1.0"?>  
  3. <digester-rules>  
  4.   <pattern value="academy">  
  5.       <object-create-rule classname="com.commonsbook.chap7.academy.Academy" />  
  6.      <set-properties-rule />  
  7.      <pattern value="student">  
  8.          <object-create-rule classname="com.commonsbook.chap7.academy.Student" />  
  9.          <set-properties-rule />  
  10.   
  11.          <pattern value="course">  
  12.              <object-create-rule classname="com.commonsbook.chap7.academy.Course" />  
  13.              <bean-property-setter-rule pattern="id"/>  
  14.              <bean-property-setter-rule pattern="name"/>  
  15.              <set-next-rule methodname="addCourse" />  
  16.          </pattern>  
  17.          <set-next-rule methodname="addStudent" />  
  18.      </pattern>  
  19.   
  20.      <pattern value="teacher">  
  21.          <object-create-rule classname="com.commonsbook.chap7.academy.Teacher" />  
  22.          <set-properties-rule />  
  23.          <call-method-rule pattern="certification" methodname="addCertification"  
  24.              paramcount="1" />  
  25.          <call-param-rule pattern="certification" paramnumber="0"/>  
  26.          <set-next-rule methodname="addTeacher" />  
  27.      </pattern>  
  28.  </pattern>  
  29. </digester-rules>  

============================================================
2. DigestXMLJavaAcademy.java
代碼
  1. public class DigestXMLJavaAcademy {  
  2.     public void digest(){  
  3.         try {  
  4.             //Create Digester using rules defined in academyRules.xml  
  5.             Digester digester = DigesterLoader.createDigester(  
  6.                      this.getClass().getClassLoader().getResource("academyRules.xml"));  
  7.   
  8.             //Parse academy.xml using the Digester to get an instance of Academy  
  9.             Academy a = (Academy)digester.parse(  
  10.             this.getClass().getClassLoader().getResourceAsStream("academy.xml"));  
  11.   
  12.             Vector vStud=a.getStudents();  
  13.             Vector vTeach=a.getTeachers();  
  14.   
  15.             for (int i = 0; i < vStud.size(); i++) {  
  16.                 System.out.println("Student>> "+PropertyUtils.describe(vStud.get(i)));  
  17.             }  
  18.   
  19.             for (int i = 0; i < vTeach.size(); i++) {  
  20.                 System.out.println("Teacher>> "+ PropertyUtils.describe(vTeach.get(i)));  
  21.             }  
  22.          } catch(Exception e) {  
  23.              e.printStackTrace();  
  24.          }  
  25.     }  
  26.   
  27.     public static void main(String[] args) {  
  28.         DigestXMLJavaAcademy xmlDigest= new DigestXMLJavaAcademy();  
  29.         xmlDigest.digest();  
  30.     }  
  31. }  

五.運行結果
自己運行吧,呵呵

六.后記
寫(xiě)下來(lái)還真得花點(diǎn)時(shí)間呢,不過(guò)這也是對自己以前思路的一個(gè)整理.
寫(xiě)出來(lái)與大家共同分享也是一種樂(lè )趣.呵呵.
下次有時(shí)間寫(xiě)一篇關(guān)于cglib的常用法.

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
常用jar包之commons-digester使用
關(guān)于使用commons-betwixt組件實(shí)現xml信息-->Java Bean的轉化的一些感受
JAVA的XML編程(dom)
用Digester解析xml到bean
[jakarta-commons] 使用Digester解釋xml獲取java對象(代碼入...
Commons-Digester簡(jiǎn)介
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久