2012-03-27 19 views
5

Ich habe eine XML-Datei wie folgt und wenn die DateiPfad2 Null oder leer ist, möchte ich den Wert der DateiPfad1 Wert. Gibt es eine Möglichkeit, dies durch JAXB zu erreichen?Setze Standardwert in JAXB

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

Ich möchte den Standardwert nicht fest codieren. Wenn der Wert für filePath2 null oder leer ist (""), möchte ich das filePath1-Attribut als den Wert von 'String filePath' festlegen. Gibt es eine Möglichkeit, dies über einen Setter in JAXB zu tun?

Antwort

3

Mit Ebene Oracle JAXB den Trick tun sollte ich die Möglichkeit, nur sehen eine javax.xml.bind.Unmarshaller.Listener zu implementieren, dass die Verwendung. Implementieren Sie diese Schnittstelle in Ihrer Modellklasse und führen Sie die erforderlichen Prüfungen in der Methode afterUnmarshal(..) durch.

Dort können Sie auf den Wert filePath1 zugreifen und (falls erforderlich) filePath2 einstellen.

1

Wenn Sie Anmerkungen verwenden können, als dies

... 
private String foo; 

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

Das wird den Standardwert auf "bar" 'fest verdrahten. Es wird nicht dynamisch gelesen '../../@ filePath1' –

2

Danke für all Ihre Eingaben, am Ende entschied ich mich für eine einfachere Lösung; um den Setter zu aktualisieren, in dem filePath2 aufgerufen wird. Der JAXB Teil -

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

Wo filePath verwendet wird -

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

Wenn Sie über eine bettr kommen und dennoch einfache Lösung lassen Sie mich wissen.

Verwandte Themen