有解决方案忽略空字符串元素,但在我的情况下,我有一个数组列表,其中有许多空字符串(非空)。
所以我在生成的输出中得到了很多空元素。
想法?
@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级别有解决方案吗?像nillable一样?
答案 0 :(得分:0)
您可以为此用例使用marshal事件回调方法(请参阅:http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/Marshaller.html#marshalEventCallback)。此方法将继承具有fileNumber
属性的类,并且您的JAXB实现将在调整该对象之前调用此方法,从而使您有机会进行任何必要的清理。
private void beforeMarshal(Marshaller marshaller) {
fileNumber.removeAll(Collections.singleton(""));
}