2012-03-27 22 views
5

私は次のようなxmlファイルを持っています.filePath2がnullまたは空の場合、その値をfilePath1の値にします。 JAXBを通じてこれを実現する方法はありますか?JAXBのデフォルト値を設定する

<file filePath1="C:/filePath"> 
    <subFile name="Test"> 
     <filePath2></filePath2> 
    </subFile> 
<file/> 

デフォルト値をハードコードしたくありません。 filePath2の値がnullまたは空白( "")の場合、filePath1属性を 'string filePath'の値として設定します。 JAXBのセッターでそれを行う方法はありますか?

答えて

3

を行う必要がありますよりも、あなたは私が唯一の可能性を参照して、注釈を使用することができる場合は、その使用javax.xml.bind.Unmarshaller.Listenerを実装します。 モデルクラスでそのインターフェイスを実装し、afterUnmarshal(..)メソッドで必要なチェックを実行します。

filePath1の値にアクセスし、必要に応じてfilePath2に設定することができます。

1

これはプレーンのOracle JAXBを使用したトリック

... 
private String foo; 

@XmlElement(defaultValue="bar") 
public String getFoo() { 
    return foo; 
} 
... 
+2

これはデフォルト値を '' bar ''にハードワイヤします。 '../../@ filePath1'を動的に読み込みません –

2

すべての入力をお寄せいただきありがとうございます。最後に、より簡単な解決策を選択しました。 filePath2が呼び出されているセッターを更新します。 JAXBの一部 -

if (filePath2 == null || filePath2.isEmpty()) { 
    setFilePath2(getFilePath1()); 
} 

あなたはまだ簡単な解決策は、私に知らせてbettrに遭遇した場合 - filePathには使用されている

String filePath2; 
@XmlElement(required = true) 
public void setFilePath2(final String file) { 
    this.filePath2= file; 
} 

関連する問題