7

JAXB を使用すると、null 値が () 空の要素としてマーシャリングされないようにすることができます。例えば

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

現在、電話要素の1つがnullの場合、私は取得します

<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要素を持つコレクションを使用しています。リストには2つの要素があります:(empty Phoneすべてのフィールドはnull)でPhone object、null以外のフィールドがあります。
それで、

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 に答える