Есть решения игнорировать пустые элементы строки, но в моем случае у меня есть список массивов, в котором много пустых строк (не пусто).
Поэтому я получаю много пустых элементов в сгенерированном выходе.
Мысли?
@XmlElement
private List<String> fileNumber;
Это результат:
<fileNumber>25478</fileNumber>
<fileNumber>45875</fileNumber>
<fileNumber></fileNumber>
<fileNumber></fileNumber>
Я могу решить эту проблему, удалив их в списке в файле setFileNumber. (Как показано ниже)
public void setFileNumber(List<String> fileNumber) {
fileNumber.removeAll(Collections.singleton(""));
this.fileNumber = fileNumber;
}
Но есть ли решение на уровне JAXB? Как лакомый кусочек?
Вы можете использовать метод обратного вызова для маршала для этого варианта использования (см. Http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/Marshaller.html#marshalEventCallback). Этот метод будет идти по классу с свойством fileNumber
, и ваша реализация JAXB вызовет этот метод до того, как он будет fileNumber
объект, дающий вам возможность выполнить любую необходимую очистку.
private void beforeMarshal(Marshaller marshaller) {
fileNumber.removeAll(Collections.singleton(""));
}