2012-09-18 10 views
6

JAXBを使用すると、null値が空の要素としてマーシャリングされないようにすることができます。インスタンス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の2つの要素があります。
ので、

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> 
に整列化されます
関連する問題