JAXB

2012-03-27 31 views
5

için varsayılan değeri ayarlayın Aşağıdaki gibi bir xml dosyası var ve filePath2 boş veya boş olduğunda bunun değerini filePath1 değerinin olmasını istiyorum. JAXB aracılığıyla bunu başarabileceğim bir yol var mı?JAXB

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

Varsayılan değeri kodlamak istemiyorum. FilePath2 değeri boşsa veya boşsa (""), filePath1 özniteliğini 'String filePath' değeri olarak ayarlamak istiyorum. JAXB'de bir setter ile yapmanın bir yolu var mı?

cevap

3

yapmalıyım daha ben sadece olasılığını bkz ek açıklamaları kullanabiliyorsa o kullanarak javax.xml.bind.Unmarshaller.Listener uygulamaktır. Bu sınıfı, model sınıfınızda uygulayın ve gerekli kontrolleri afterUnmarshal(..) yönteminde gerçekleştirin.

Burada filePath1 değerine erişebilir ve (gerekirse) filePath2'a ayarlayabilirsiniz.

1

bu düz Oracle JAXB kullanarak hile

... 
private String foo; 

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

Bu, varsayılan değeri "bar" olarak sabitleyecektir. Dinamik olarak '../../@ filePath1' okumaz –

2

Tüm girişleriniz için teşekkürler, daha basit bir çözüm seçtiniz; filePath2'nin çağrıldığı diziyi güncellemek için. JAXB kısmı -

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

henüz basit bir çözüm bana bildirin bir bettr rastlarsanız - filePath kullanılır

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

.