| 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;
}
}
