Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. import org.apache.commons.digester3.Digester;
  2. import org.xml.sax.SAXException;
  3.  
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.util.Objects;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class ApacheCommonsDigester {
  11. private Foo foo;
  12.  
  13. public void setFoo(Foo foo) {
  14. this.foo = foo;
  15. }
  16.  
  17. public static void main(String[] args) throws IOException, SAXException {
  18. Main main = new Main();
  19.  
  20. Digester digester = new Digester();
  21. digester.setValidating(false);
  22.  
  23. digester.push(main);
  24.  
  25. digester.addObjectCreate("foo", Foo.class);
  26. digester.addSetProperties("foo", "name", "name");
  27. digester.addSetNext("foo", "setFoo");
  28.  
  29. digester.addObjectCreate("foo/bar", Bar.class);
  30. digester.addSetProperties("foo/bar", new String[]{"id", "title"}, new String[]{"id", "name"});
  31. digester.addSetNext("foo/bar", "addBar", Bar.class.getSimpleName());
  32.  
  33. Object parse = null;
  34. try (InputStream stream = Main.class.getClassLoader().getResourceAsStream("test.xml")) {
  35. parse = digester.parse(Objects.requireNonNull(stream));
  36. } catch (NullPointerException e) {
  37. return;
  38. }
  39. // Foo foo = (Foo) parse;
  40. // System.out.println(parse);
  41.  
  42. System.out.println("MAIN: " + main.foo);
  43. }
  44. }
  45.  
  46. class Foo {
  47. private String name;
  48.  
  49. private List<Bar> barList;
  50.  
  51. public Foo() {
  52. this.barList = new ArrayList<>();
  53. }
  54.  
  55. public String getName() {
  56. return name;
  57. }
  58.  
  59. public void setName(String name) {
  60. System.out.println(this + "执行 setName 方法");
  61. this.name = name;
  62. }
  63.  
  64. public void addBar(Bar bar) {
  65. System.out.println(this + "执行 addBar 方法");
  66. this.barList.add(bar);
  67. }
  68.  
  69. @Override
  70. public String toString() {
  71. return "Foo{" +
  72. "name='" + name + '\'' +
  73. ", barList=" + barList +
  74. '}';
  75. }
  76. }
  77.  
  78. class Bar {
  79. private Integer id;
  80. private String name;
  81.  
  82. public Integer getId() {
  83. return id;
  84. }
  85.  
  86. public void setId(Integer id) {
  87. System.out.println(this + "执行 setId 方法");
  88. this.id = id;
  89. }
  90.  
  91. public String getName() {
  92. return name;
  93. }
  94.  
  95. public void setName(String name) {
  96. System.out.println(this + "执行 setName 方法");
  97. this.name = name;
  98. }
  99.  
  100. @Override
  101. public String toString() {
  102. return "Bar{" +
  103. "id=" + id +
  104. ", name='" + name + '\'' +
  105. '}';
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement