java digester-jar类解析xml 简单例子

来源:互联网 发布:淘宝网汽车坐垫套途观l 编辑:程序博客网 时间:2024/06/13 23:35

1.xml文件:

<?xml version="1.0" encoding="UTF-8"?><students> <student> <name>Tom</name> <course>JSP</course> </student> <student> <name>Mary</name> <course>J2EE</course> </student></students>
2.硬编码形式实现
Student类package com.tongda.whl.digester;public class Student { private String name; private String course; public void setName(String name){  this.name=name; } public void setCourse(String course){  this.course=course; } public String getName(){  return this.name; } public String getCourse(){  return this.course; }}
处理类
package com.tongda.whl.digester;  import org.apache.commons.digester.*;  import org.apache.commons.logging.*;  import java.io.IOException;  import java.util.Vector;  import org.apache.commons.digester.xmlrules.*;  import org.xml.sax.SAXException;  public class DigestTest {   private Log log=LogFactory.getLog(this.getClass());   private Vector students;   public DigestTest(){    students= new Vector(5);   }   public void addStudent( Student student){    students.add( student);   }   public String toString(){    return ((Student)students.get(0)).getName();   }   public void digest(){    //digest2.0支持jdk1.5,并且依赖 logging 1.1.1 和 beanutils 1.8.0    //创建实例    Digester digester= new Digester();    //将初始对象压入digester的stack    digester.push( this);    //指明匹配模式和要创建的类    digester.addObjectCreate( "students/student", Student.class);    //设置对象属性   // digester    digester.addBeanPropertySetter( "students/student/name");    digester.addBeanPropertySetter( "students/student/course");    //当移动到下一个标签中时的动作    digester.addSetNext( "students/student", "addStudent");    try {    //解析,xml文件放在classpath下     DigestTest ds= (DigestTest)digester.parse( getClass().getClassLoader().getResourceAsStream( "students.xml"));        log.info(ds);    } catch (Exception e) {    e.printStackTrace();     }   }   public static void main(String args[]){    DigestTest test=new DigestTest();    test.digest();   }   }  
结果显示:Tom

3.配置文件方式实现


配置文件:studentsRule.xml <?xml version="1.0"?><digester-rules> <pattern value="students"> <object-create-rule classname="com.tongda.whl.digester.Students" /> <set-properties-rule /> <pattern value="student"> <object-create-rule classname="com.tongda.whl.digester.Student" /> <bean-property-setter-rule pattern="name"/> <bean-property-setter-rule pattern="course"/> <set-next-rule methodname="addStudent" /> </pattern> </pattern></digester-rules>Student类package com.tongda.whl.digester;public class Student { private String name; private String course; public void setName(String name){  this.name=name; } public void setCourse(String course){  this.course=course; } public String getName(){  return this.name; } public String getCourse(){  return this.course; }}Students类package com.tongda.whl.digester;import java.util.Vector;public class Students {  private Vector students;  public Students(){   students= new Vector(5); }  public void addStudent( Student student){   students.add( student);  }  public String toString(){     return ((Student)students.get(0)).getName();  }}
处理类

  1. package com.tongda.whl.digester;  
  2. import org.apache.commons.digester.*;  
  3. import org.apache.commons.logging.*;  
  4. import java.io.IOException;  
  5. import java.util.Vector;  
  6. import org.apache.commons.digester.xmlrules.*;  
  7. import org.xml.sax.SAXException;  
  8. public class DigestTest {  
  9.  private Log log=LogFactory.getLog(this.getClass());  
  10.  public void digestByConfig(){  
  11.   Digester digester = DigesterLoader.createDigester(this.getClass().getClassLoader().getResource("studentsRule.xml"));  
  12.   try {  
  13.   Students a= (Students)digester.parse( this.getClass().getClassLoader().getResourceAsStream("students.xml"));  
  14.      System.out.println(a);  
  15.   log.info(a);  
  16.   } catch (IOException e) {  
  17.   e.printStackTrace();  
  18.  } catch (SAXException e) {  
  19.   e.printStackTrace();  
  20.  }  
  21.  }  
  22.  public static void main(String args[]){  
  23.   DigestTest test=new DigestTest();  
  24.   test.digestByConfig();  
  25.  }   
  26. }  

结果显示:Tom

原创粉丝点击