foobar.xml
<?xml version="1.0"?>
<foo name="The Parent" page="123">
<bar id="123" title="The First Child" />
<bar id="456" title="The Second Child" />
</foo>
Foo.java
package digesterfoobar;
import java.util.Iterator;
import java.util.Vector;
public class Foo {
private Vector<Bar> barVector;
private String name;
private String page;
public Foo() {
barVector = new Vector<Bar>();
}
public void addBar(Bar bar) {
barVector.add(bar);
}
public Iterator getBars() {
return barVector.iterator();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
}
Bar.java
package digesterfoobar;
import org.apache.commons.lang.builder.ToStringBuilder;
public class Bar {
private int id;
private String title;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
Client.java
package digesterfoobar;
import java.io.IOException;
import org.apache.commons.digester.Digester;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.xml.sax.SAXException;
public class Client {
/**
* @param args
* @throws SAXException
* @throws IOException
*/
public static void main(String[] args) throws IOException, SAXException {
Digester digester = new Digester();
digester.addObjectCreate("foo", Foo.class);
digester.addSetProperties("foo");
digester.addObjectCreate("foo/bar", Bar.class);
digester.addSetProperties("foo/bar");
digester.addSetNext("foo/bar", "addBar");
Foo foo = (Foo) digester.parse(Client.class.getResourceAsStream("foobar.xml"));
System.out.println(ToStringBuilder.reflectionToString(foo));
}
}
digester.addSetProperties("foo");会处理foo的所有属性
digester.addSetNext("foo/bar", "addBar");处理下一个