Нужна помощь в форматировании вывода JAXB
У меня есть несколько объектов, скажем, два, A и B. Эти объекты из одного класса. Мне нужно упорядочить эти объекты с помощью JAXB, и выходной XML должен быть в этой форме:
<code><Root> <A> <ID> an id </ID> </A> <B> <ID> an id </ID> </B> </Root> <!-- Then all A and B attributes must be listed !--> <A> <ID> an id </ID> <attribute1> value </attribute1> <attribute2> value </attribute2> </A> <B> <ID> an id </ID> <attribute1> value </attribute1> <attribute2> value </attribute2> </B> </code>
Как сгенерировать этот формат в JAXB? Любая помощь приветствуется.
Update: Чтобы быть более конкретным, предположим, что у нас есть класс Human, подобный этому:
<code>@XmlRootElement public class Human { private String name; private int age; private Integer nationalID; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Integer getNationalID() { return nationalID; } public void setNationalID(Integer nationalID) { this.nationalID = nationalID; } } </code>
и наш основной класс это:
<code>public class Main3 { public static void main(String[] args) throws JAXBException { Human human1 = new Human(); human1.setName("John"); human1.setAge(24); human1.setNationalID(Integer.valueOf(123456789)); JAXBContext context = JAXBContext.newInstance(Human.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); StringWriter stringWriter = new StringWriter(); m.marshal(human1, stringWriter); System.out.println(stringWriter.toString()); } } </code>
Тогда вывод будет:
<code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <human> <age>24</age> <name>John</name> <nationalID>123456789</nationalID> </human> </code>
Теперь мне нужно, чтобы вывод был таким:
<code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <human> <nationalID>123456789</nationalID> </human> <human> <nationalID>123456789</nationalID> <age>24</age> <name>John</name> </human> </code>
И это поможет мне нарисовать дерево объектов XML без атрибутов (только по идентификатору), а затем, но со всеми определениями под деревом. Возможно ли это с помощью JAXB или любой другой реализации?