1

マーシャリング時に @XmlTransient を使用せずに特定の要素を無視することは可能ですか?

JAXBContext jc = JAXBContext.newInstance(Customer.class);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

使用しない理由は、xml Bean を使用する他の開発者がそれらの要素をマーシャリングしたい可能性があるためです。

4

2 に答える 2

0

XML から一部のフィールドを除外する場合は、その値を に設定できますnull
nullフィールドは XML にマーシャリングされません
例:
DTO:

class Customer
{
   private String a;
   // getters/setter
}  

論理:

Customer customerInstance = ...; // some business logic with Customer instance
//... business logic
customerInstance.setA(null);     // set null before marshalling
// marshalling

プロパティaは XML には存在しません

于 2013-09-15T18:41:15.183 に答える
0

皆さん、

簡単な答えは、それらのフィールドのない「顧客」モデルの別のクラスを作成することだと思います

class CustomerA{

@XmlElement
private String name;

//@XmlElement   // Element that I do not want to keep
//Private Date dob;

}

私がする必要があるのは、CustomerA に値を設定することだけです。Java はオブジェクトの値参照によって渡すため、参照バイトが少し発生するだけです。

これが最も安価で簡単な方法であり、そのドメインを制御できます。

于 2013-09-15T23:00:12.573 に答える