Ну, Я нашел один способ сделать это, хотя я не нахожу его супер элегантным.
Редактировать: На самом деле, решение ниже не работает должным образом. Фактически это не приводит к добавлению записей в список, независимо от того, являются ли они пустым элементом или полностью сформированы с данными.
Возможно, я сделал это неправильно, поэтому любые комментарии приветствуются.
Я создал адаптер для обработки преобразования и сообщил JAXB с помощью аннотации:
class Course {
@XmlElement (name = "book")
@XmlJavaTypeAdapter(BookListAdapter.class)
List<Book> requiredBooks = new ArrayList<Book>();
и затем определил мой адаптер:
static class BookListAdapter extends XmlAdapter<Book[], List<Book>>
{
public Book[] marshal(List<Book> aBookList)
{
if (aBookList!= null)
{
return aBookList.toArray(new Book[aBookList.size()]);
}
return null;
}
public List<Book> unmarshal(Book[] aBookArray)
{
List<Book> bookList = new ArrayList<Book>();
if (aBookArray != null)
{
for (Book book : aBookArray)
{
if (StringUtils.isNotEmpty(book.getTitle()))
{
bookList.add(book);
}
}
}
return bookList;
}
}
Он работает так, как я хочу, но, как я уже говорил, я не уверен в его элегантности.
Редактировать: Как описано выше, это не работает, но, вероятно, из-за какой-то ошибки с моей стороны.