Подавить пустые строковые элементы в JAXB ArrayList

1

Есть решения игнорировать пустые элементы строки, но в моем случае у меня есть список массивов, в котором много пустых строк (не пусто).

Поэтому я получаю много пустых элементов в сгенерированном выходе.

Мысли?

@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? Как лакомый кусочек?

Теги:
jaxb

1 ответ

0
Лучший ответ

Вы можете использовать метод обратного вызова для маршала для этого варианта использования (см. 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(""));
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню