У меня есть несколько объектов, скажем два, A и B. Эти объекты из того же класса. Мне нужно, чтобы мобилизовывать эти объекты с использованием JAXB и вывод XML должен быть в такой форме:Нужна помощь в форматировании вывода JAXB
<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>
Как создать этот формат в JAXB? Любая помощь приветствуется.
Update: Чтобы быть более конкретным, Предположим, что мы имеем Человеческий класс как это:
@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;
}
}
и нашего основного класса:
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());
}
}
Тогда выход будет:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<human>
<age>24</age>
<name>John</name>
<nationalID>123456789</nationalID>
</human>
Теперь мне нужен выходной сигнал как это:
<?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>
И это поможет мне нарисовать дерево объектов XML без атрибутов (только по ID), а затем, но все определения ниже дерева. Возможно ли использование JAXB или любой другой реализации?
К сожалению, это не то, что мне это нужно будет производить XML с каждого узла содержит это атрибуты. Я уточнил вопрос мне более понятным (Мой плохой, извините). –
Я не думаю, что есть решение для того, что вы хотите сделать, используя jaxb, поскольку он слишком строг при именовании. Как вы собираетесь использовать xml, возможно, вы можете сгенерировать его с помощью другого синтаксического анализатора, или в худшем случае вы можете создать свой собственный парсер, который выполняет именно эту задачу. Я пытался создать то, что вы ожидаете, но это возможно только с дополнительными тегами и/или пространствами имен. – pXel
Большое спасибо за ваш ответ. Не могли бы вы рассказать мне, какие дополнительные теги вы использовали? Я могу использовать любые теги, которые мне нужны. Также, что другие парсеры, которые вы думаете, помогут мне решить эту проблему? Решение не обязательно должно быть строгим в отношении именования, но оно должно создавать дерево объектов, используя только там идентификаторы, а атрибуты объектов должны быть ниже дерева, это единственное, что имеет значение. –