fork(4) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. /* package whatever; // don't place package name! */
  4.  
  5.  
  6.  
  7. import java.io.File;
  8. import java.util.ArrayList;
  9. import javax.xml.bind.JAXBContext;
  10. import javax.xml.bind.JAXBException;
  11. import javax.xml.bind.Marshaller;
  12. import javax.xml.bind.Unmarshaller;
  13. import javax.xml.bind.annotation.XmlRootElement;
  14. import java.util.ArrayList;
  15.  
  16. import javax.xml.bind.annotation.XmlElement;
  17. import javax.xml.bind.annotation.XmlElements;
  18. import javax.xml.bind.annotation.XmlElementWrapper;
  19. import javax.xml.bind.annotation.XmlRootElement;
  20. import javax.xml.bind.annotation.XmlType;
  21. import java.util.ArrayList;
  22.  
  23.  
  24.  
  25. class Ideone {
  26. public static void main(String[] args) {
  27. try {
  28. Department department = new Department();
  29. FactoryWorker factoryWorker = new FactoryWorker();
  30. factoryWorker.setId(Long.valueOf(999));
  31. factoryWorker.setWorksNights(true);
  32. department.setEmployee(factoryWorker);
  33.  
  34. JAXBContext jaxBContext = JAXBContext.newInstance(Department.class);
  35. Marshaller jaxbMarshaller = jaxBContext.createMarshaller();
  36. jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  37. jaxbMarshaller.marshal(department, System.out);
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }
  43.  
  44.  
  45. @XmlRootElement(name="Department")
  46. class Department {
  47. public Department() {}
  48. @XmlElements({
  49. @XmlElement(name="Manager", type=Manager.class),
  50. @XmlElement(name="FactoryWorker", type=FactoryWorker.class)
  51. })
  52. private Employee employee;
  53. public void setEmployee(Employee val) {this.employee = val;}
  54. }
  55.  
  56.  
  57. class Employee {
  58. private Long id;
  59. public Employee() {}
  60. public Long getId(){return this.id;}
  61. public void setId(Long val) {this.id = val;}
  62.  
  63. }
  64.  
  65. class Manager extends Employee{
  66. public Manager() {}
  67. private Integer numberOfProjects;
  68. public Integer getNumberOfProjects() {return this.numberOfProjects;}
  69. public void setNumberOfProjects(Integer val) {this.numberOfProjects = val;}
  70.  
  71. }
  72.  
  73. class FactoryWorker extends Employee{
  74. public FactoryWorker() {}
  75. private Boolean worksNights;
  76. public Boolean getWorksNights(){return this.worksNights;}
  77. public void setWorksNights(Boolean val) {this.worksNights = val;}
  78. }
Success #stdin #stdout 0.24s 321408KB
stdin
Standard input is empty
stdout
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Department>
    <FactoryWorker>
        <id>999</id>
        <worksNights>true</worksNights>
    </FactoryWorker>
</Department>