Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlIDREF;
import javax.xml.bind.annotation.XmlRootElement;

public class Main {

    public static class Person {

        @XmlID
        String id;
        @XmlElement
        String name;
        @XmlElement
        int age;

        public Person() {
        }

        public Person(String name) {
            this.id = this.name = name;
            age = new Random().nextInt();
        }
    }

    @XmlRootElement
    public static class HumansList {
        @XmlElementWrapper(name = "humanObjects")
        @XmlElement(name = "human")
        List<Person> humanObjects = new ArrayList<>();

        @XmlIDREF
        @XmlElementWrapper(name = "humanIds")
        @XmlElement(name = "id")
        List<Person> humanIds = new ArrayList<>();

        void addHuman(Person human) {
            humanObjects.add(human);
            humanIds.add(human);
        }
    }

    public static void main(String[] args) throws JAXBException {
        HumansList list = new HumansList();
        Person parent1 = new Person("parent1");
        list.addHuman(parent1);
        Person child11 = new Person("child11");
        list.addHuman(child11);
        Person child12 = new Person("child12");
        list.addHuman(child12);

        Person parent2 = new Person("parent2");
        list.addHuman(parent2);
        Person child21 = new Person("child21");
        list.addHuman(child21);
        Person child22 = new Person("child22");
        list.addHuman(child22);

        JAXBContext context = JAXBContext.newInstance(HumansList.class);
        Marshaller m = context.createMarshaller();
        StringWriter xml = new StringWriter();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");

        m.marshal(list, xml);
        System.out.println(xml);
    }
}