7

使用 JAXB 可以确保 null 值不会被编组为 () 空元素。例如

public class Contacts {
    @XmlElement(name = "Phone")
    protected List<Phone> phone;
    }

目前,如果其中一个电话元素为空,我得到

<contact>
         </phone>
         <phone>
                <areacode>919</areacode>
                <phonenumber>6785432</phonenumber>
         </phone>
    </contact>

我想要以下输出

<contact>
            <phone>
                   <areacode>919</areacode>
                   <phonenumber>6785432</phonenumber>
            </phone>
   </contact>
4

1 回答 1

4

默认情况下,空值不作为空元素封送
只有空值被编组为空元素

在您的示例中,您正在使用带有空Phone object元素的集合。您在列表中有两个元素:(empty Phone所有字段都是null)和Phone object非空字段。
所以,

public class Contacts {
    @XmlElement(name = "Phone")
    protected List<Phone> phone = Arrays.asList(new Phone[]{null, null, null});
}  

将被编组到

<contact/>  

public class Contacts {
    @XmlElement(name = "Phone")
    protected List<Phone> phone = Arrays.asList(new Phone[]{new Phone(), new Phone(), null});
}

将被编组到

<contact>   
    <Phone/>  
    <Phone/>  
</contact>
于 2012-09-19T07:12:57.867 回答