近来在学习tomcat的源码,其中有个解析XML的工具Digester,感觉很有意思,稍微研究了一下,今天先把写的例子弄上来,以后再讲一下Digester的原理和实现,总体感觉这个组件设计的很巧妙,重点当然是Pattern和Rule已经栈的使用了。
package org.apache.commons.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;
public class DigesterStudents {
private Vector<Student> students;
public DigesterStudents(){
students = new Vector<Student>();
}
public static void main(String[] args){
DigesterStudents ds = new DigesterStudents();
ds.digester();
}
private void digester(){
Digester digester = new Digester();
digester.push(this);
digester.addObjectCreate("students/student", Student.class.getName());
digester.addCallMethod("students/student/name", "setName",1);
digester.addCallParam("students/student/name", 0);
digester.addCallMethod("students/student/course", "setCourse",0);
digester.addSetNext("students/student", "addStudents");
digester.addSetProperty("students/student/set-name-property", "propertyName", "propertyValue");
digester.addSetProperty("students/student/set-course-property", "propertyName", "propertyValue");
try {
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("students.xml");
DigesterStudents ds = (DigesterStudents)digester.parse(in);
digester.setDebug(10);
System.out.println(ds.students);
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
}
public void addStudents(Student student){
students.add(student);
}
}
package org.apache.commons.test;
public class Student {
private String name;
private String course;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public String toString() {
return ("Name=" + this.name + " & Course=" + this.course);
}
}
<?xml version="1.0" ?>
<students>
<student>
<name>Java Boy</name>
<course>JSP</course>
</student>
<student>
<name>Java Girl</name>
<course>EJB</course>
</student>
<student>
<set-name-property propertyName="name" propertyValue="Java Hobbies" />
<set-course-property propertyName="course" propertyValue="Java Programming" />
</student>
</students>
- 大小: 44.8 KB
分享到:
相关推荐
digester解析学习笔记
Digester读取XML学习,Digester读取XML学习
digester
Castor、digester实例 Castor、digester实例 Castor、digester实例
首先Digester是什么,它是用来解析xml文件的的工具,是jakarta开源项目下commons的一个子项目,它能让程序员更方便的解析xml文件,而不需要了解底层的工作细节。 如果要使用Digester作为xml文件的解析,请到jakarta...
用Digester開發的一個小程序。
Digester java解析xml jar包
资源为Digester的xml解析应用案例,
赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar; 赠送源代码:commons-digester3-3.2-sources.jar; 赠送Maven依赖信息文件:commons-digester3-3.2.pom; 包含翻译后...
不错的解析XML的类,主要利用org.apache.commons.digester.Digester;
Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...
此为官网版本的commons-digester-2.1.jar maven中下载的commons-digester-2.1.jar无法使用
commons-digester-2.0.rar源文件及jar文件
digester3.2 源码 and digester3.2 application sample
Digester读取xml教程.rar
赠送jar包:commons-digester-1.8.1.jar; 赠送原API文档:commons-digester-1.8.1-javadoc.jar; 赠送源代码:commons-digester-1.8.1-sources.jar; 赠送Maven依赖信息文件:commons-digester-1.8.1.pom; 包含...
commons-digester.jar
赠送jar包:commons-digester3-3.2.jar; 赠送原API文档:commons-digester3-3.2-javadoc.jar; 赠送源代码:commons-digester3-3.2-sources.jar; 赠送Maven依赖信息文件:commons-digester3-3.2.pom; 包含翻译后...