有一些解决方案可以忽略空字符串元素,但是在我的情况下,我有一个包含许多空字符串的数组列表(不是null)。
所以我在生成的输出中得到很多空元素。
有什么想法吗?
@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实现将在对对象进行封送之前调用此方法,使您有机会进行必要的清理。
private void beforeMarshal(Marshaller marshaller) {
fileNumber.removeAll(Collections.singleton(""));
}