School.java
Student.java
package digester.demo;
import java.util.ArrayList;
import java.util.List;
public class School{
public String name;
public String location;
private List<Teacher> teachers=new ArrayList<Teacher>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public void addTeacher(Teacher t){
teachers.add(t);
}
@Override
public String toString() {
String s="School [name=" + name + ", location=" + location + "]";
s+="\nhave "+teachers.size()+" teachers\n";
for(Teacher t:teachers){
s+=t.toString();
s+="\n\t";
for(Student ss:t.students){
s+=ss;
s+="\n\t";
}
s+="\n";
}
return s;
}
}
Student.java
package digester.demo;
public class Student{
private String name;
private String hobby;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", hobby=" + hobby + ", age=" + age
+ "]";
}
}
Teacher.java
package digester.demo;
import java.util.ArrayList;
import java.util.List;
public class Teacher{
private int id;
private String name;
public List<Student> students=new ArrayList<Student>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void addStudent(Student s){
students.add(s);
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
}
}
School.java
package digester.demo;
import java.util.ArrayList;
import java.util.List;
public class School{
public String name;
public String location;
private List<Teacher> teachers=new ArrayList<Teacher>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public void addTeacher(Teacher t){
teachers.add(t);
}
@Override
public String toString() {
String s="School [name=" + name + ", location=" + location + "]";
s+="\nhave "+teachers.size()+" teachers\n";
for(Teacher t:teachers){
s+=t.toString();
s+="\n\t";
for(Student ss:t.students){
s+=ss;
s+="\n\t";
}
s+="\n";
}
return s;
}
}
下面是要处理的xml
<?xml version="1.0" encoding="UTF-8"?>
<school name="school number1" location="SZ">
<teacher id="001" name="zhangshan">
<students>
<student name="stu1">
<hobby>basketball</hobby>
<age>23</age>
</student>
<student name="stu2">
<hobby>football</hobby>
<age>24</age>
</student>
</students>
</teacher>
<teacher id="002" name="lisi">
<students>
<student name="_stu1">
<hobby>tennis</hobby>
<age>25</age>
</student>
<student name="_stu2">
<hobby>badminton</hobby>
<age>26</age>
</student>
</students>
</teacher>
</school>
package digester.demo;
import java.io.File;
import java.io.IOException;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;
public class ParseSchool {
/**
* @param args
* @throws SAXException
* @throws IOException
*/
public static void main(String[] args) throws Exception {
Digester digester = new Digester();
digester.setNamespaceAware(false);
digester.setValidating(false);
digester.addObjectCreate("school", digester.demo.School.class);
digester.addSetProperties("school");
digester.addObjectCreate("school/teacher", digester.demo.Teacher.class);
digester.addSetProperties("school/teacher");
digester.addSetNext("school/teacher", "addTeacher");
digester.addObjectCreate("school/teacher/students/student", digester.demo.Student.class);
digester.addSetProperties("school/teacher/students/student");
digester.addSetNestedProperties("school/teacher/students/student");
digester.addSetNext("school/teacher/students/student/", "addStudent");
School s = (School) digester.parse(new File("school.xml"));
System.out.println(s);
}
}