home  |  suche  |  kontakt/johner  |  institut  |  hinweise 
studierende  |  tech-docs  |  blog  |  mindmailer 

JAXB mit Annotationen (Java 1.6)

JAXB braucht nur wenige Annotationen um Java-Klasse in XML-Dokumenten zu parsen.


Angenommen wir haben eine Java-Klasse Fuhrpark welche in einer Collection einige Objekte der Klasse Fahrzeug enthält, so müssten wir Fuhrpark mit der Annotation

@XmlRootElement 

versehen. Denn dies ist unser Wurzelelement.

JAXB berücksichtigt standardmässig alle Bean-Attribute (Attribute welche mit get() und set()-Methoden versehen sind).

Möchte man Nicht-Bean-Attribute übertragen haben, so benötigt man die Annotation:

@XmlElement(required = true)

 

Mit dieser Annotation ist es übrigens auch möglich die XML-Elemente umzubenennen. So könnten wir die Liste "Fahrzeuge" auch in "Kraftfahrzeuge umbenennen:

@XMLElement (name = "Kraftfahrzeuge")

 

Zusätzliche Bedingungen für das Schreiben einer Klasse in ein XML-Dokument können mit der Annotation @XMLType übergeben werden. So zum Beispiel die Reihenfolge in der die Attribute in der XML-File geschrieben werden.

@XmlType( propOrder={ "typ", "ps", "kennzeichen" } )

Klasse Fuhrpark:

@XmlRootElement
public class Fuhrpark {
    private String name;
   
    @XmlElement(required=true)
    private Collection<Fahrzeug> fahrzeuge = new ArrayList<Fahrzeug>();
    public Fuhrpark(){}
   
    public void addFahrzeug(Fahrzeug f){
        fahrzeuge.add(f);
    }
   
    public Collection<Fahrzeug> getFahrzeuge(){
        return fahrzeuge;
    }
   
    public String getName(){
        return name;
    }
   
    public void setName(String name){
        this.name = name;
    }
   
}

Klasse Fahrzeug:

@XmlType
public class Fahrzeug {

private String typ;
private int ps;
private String kennzeichen;

public Fahrzeug(){}

public Fahrzeug(String typ, int ps, String kennzeichen) {
super();
this.typ = typ;
this.ps = ps;
this.kennzeichen = kennzeichen;
}
public String getTyp() {
return typ;
}
public void setTyp(String typ) {
this.typ = typ;
}
public int getPs() {
return ps;
}
public void setPs(int ps) {
this.ps = ps;
}
public String getKennzeichen() {
return kennzeichen;
}
public void setKennzeichen(String kennzeichen) {
this.kennzeichen = kennzeichen;
}
}