Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.apache.commons.digester3.Digester;
- import org.xml.sax.SAXException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Objects;
- import java.util.ArrayList;
- import java.util.List;
- public class ApacheCommonsDigester {
- private Foo foo;
- public void setFoo(Foo foo) {
- this.foo = foo;
- }
- public static void main(String[] args) throws IOException, SAXException {
- Main main = new Main();
- Digester digester = new Digester();
- digester.setValidating(false);
- digester.push(main);
- digester.addObjectCreate("foo", Foo.class);
- digester.addSetProperties("foo", "name", "name");
- digester.addSetNext("foo", "setFoo");
- digester.addObjectCreate("foo/bar", Bar.class);
- digester.addSetProperties("foo/bar", new String[]{"id", "title"}, new String[]{"id", "name"});
- digester.addSetNext("foo/bar", "addBar", Bar.class.getSimpleName());
- Object parse = null;
- try (InputStream stream = Main.class.getClassLoader().getResourceAsStream("test.xml")) {
- parse = digester.parse(Objects.requireNonNull(stream));
- } catch (NullPointerException e) {
- return;
- }
- // Foo foo = (Foo) parse;
- // System.out.println(parse);
- System.out.println("MAIN: " + main.foo);
- }
- }
- class Foo {
- private String name;
- private List<Bar> barList;
- public Foo() {
- this.barList = new ArrayList<>();
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- System.out.println(this + "执行 setName 方法");
- this.name = name;
- }
- public void addBar(Bar bar) {
- System.out.println(this + "执行 addBar 方法");
- this.barList.add(bar);
- }
- @Override
- public String toString() {
- return "Foo{" +
- "name='" + name + '\'' +
- ", barList=" + barList +
- '}';
- }
- }
- class Bar {
- private Integer id;
- private String name;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- System.out.println(this + "执行 setId 方法");
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- System.out.println(this + "执行 setName 方法");
- this.name = name;
- }
- @Override
- public String toString() {
- return "Bar{" +
- "id=" + id +
- ", name='" + name + '\'' +
- '}';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement