2012-05-01 8 views
2

JAXBアノテーションを持つエンティティがいくつかあります。そのため、「着信」XMLをpojoに非マーシャルすることができます。 pojosをXMLにマーシャリングする必要がありますが、着信XMLとは異なる形式にする必要があります。これを行う最善の方法は何ですか?複数のJAXBアノテーションを複数のXMLにマーシャリング/アンマーシャリングすることはできますか?

+1

[複数のクライアントで異なるJAXBアノテーションが必要]の複製可能性(http://stackoverflow.com/questions/8838286/multiple-clients-require-different-jaxb-annotations) – dogbane

答えて

0

私の解決策は、JAXBオブジェクトに追加の「バージョン」フィールドを使用して、複数のバージョンのバインディングを区別することです。通常は、その型としてenumを使用します。すなわち、 enum Version {V1、V2、...};

だから、特定のXML要素フィールドに、私は1つだけ必要な列挙値にバージョン値を設定する必要があり、JAXBはの世話をする、マーシャリングの前に

@XmlElement 
public String getField() { 
    if (version == Version.V1) { 
     return field; 
    } else if (version == Version.V2) { 
     return null; // hidden 
    } 

} 

としてのgetField()メソッドを定義します残り。

関連する問題