2012-09-18 109 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>