使用JAXB可以确保空值不作为()空元素编组.例如
public class Contacts {
@XmlElement(name = "Phone")
protected List<Phone> phone;
}
Run Code Online (Sandbox Code Playgroud)
目前,如果其中一个电话元素为空,我得到
<contact>
</phone>
<phone>
<areacode>919</areacode>
<phonenumber>6785432</phonenumber>
</phone>
</contact>
Run Code Online (Sandbox Code Playgroud)
我想要以下输出
<contact>
<phone>
<areacode>919</areacode>
<phonenumber>6785432</phonenumber>
</phone>
</contact>
Run Code Online (Sandbox Code Playgroud)
默认情况下,空值不会编组为空元素。
仅空值被编组为空元素
在您的示例中,您使用带有空Phone object元素的集合。列表中有两个元素:(empty Phone所有字段均为null)且Phone object字段不为空。
所以,
public class Contacts {
@XmlElement(name = "Phone")
protected List<Phone> phone = Arrays.asList(new Phone[]{null, null, null});
}
Run Code Online (Sandbox Code Playgroud)
将被编组至
public class Contacts {
@XmlElement(name = "Phone")
protected List<Phone> phone = Arrays.asList(new Phone[]{null, null, null});
}
Run Code Online (Sandbox Code Playgroud)
但
public class Contacts {
@XmlElement(name = "Phone")
protected List<Phone> phone = Arrays.asList(new Phone[]{new Phone(), new Phone(), null});
}
Run Code Online (Sandbox Code Playgroud)
将被编组至
<contact/>
Run Code Online (Sandbox Code Playgroud)