2012-09-18 77 views
6

使用JAXB可以确保空值不会编组为()个空元素。例如jaxb编组跳过空元素

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

目前,如果手机的元素之一为null我得到

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

我想下面的输出

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

回答

4

NULL值不封送空元素默认为
只有空值被编为空元素

在您的示例中,您使用的是具有空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>