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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值