Я застрял на чем-то, что должно быть очень простым. У меня есть аннотированная анкета POJO Person (@XMLAttribute и @XMLElement в полях). Класс аннотируется как @XMLRootElement. Теперь у меня есть служба, которая выполняет запрос, возвращающий список этих экземпляров. Другими словами, я в конечном итоге сJAXB: список аннотированных аннотаций
List<Person>
Я просто хочу, чтобы мобилизовывать этот список в XML, в выходной ответ моего сервлета.
Если я просто цикл по списку и маршалом каждый объект индивидуально:
for(Person person : people){
jaxbMarshaller.marshal(person, out);
}
выводит весь документ несколько раз (я в конечном итоге с несколькими строками заголовков XML для каждой записи):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>Bob</name>
</person>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>Gary</name>
</person>
Он не должен выводить дублирующие строки заголовка между записями.
С другой стороны, если я попытаюсь объединить весь список одним звонком: jaxbMarshaller.marshal (люди, вне);
я получаю следующее исключение:
javax.xml.bind.JAXBException: class java.util.ArrayList nor any of its super class is
known to this context.
Что такое «правильный» способ просто выстроить несколько экземпляров аннотированный POJO? Я предполагаю, что он должен быть завернут в другой «верхний» корневой элемент под названием «люди», а затем каждый пользовательский узел в качестве дочернего. Но как вы это делаете с JAXB?
С благодарностью