JAXB für Einsteiger: Tutorial zur XML-Verarbeitung mit Java

Damit Anwendungen miteinander kommunizieren, ist es oftmals erforderlich, die Daten in ein Format umzuwandeln, welches eine hohe Kompatibilität aufweist. Unter Java existiert hierfür die Bibliothek JAXB, welche Objekte zu XML-Dateien verarbeitet.

Mit JAXB eine XML-Datei erzeugen – Best Practices

JAXB steht für Java Architecture for XML Binding. Es ermöglicht, Java-Objekte in XML-Dateien umzuwandeln und umgekehrt. Bevor Sie loslegen, sollten Sie einige Punkte beachten:

  • JAXB ist bereits seit Version 1.6 fester Bestandteil der JRE-Suite. Außerdem sollte die Java-Entwicklungsumgebung auf dem neuesten Stand sein, weil damit Bugs beseitigt wurden.
  • Vermeiden Sie primitive Datentypen wie Float, Decimal oder NegativeInteger sowie anonymeDatentypen. Dafür gibt es keine Entsprechung in JAXB. Ansonsten lassen sich Objekte, numerische Datentypen, Listen und Sets umwandeln. Mit komplexen Datentypen wie java.time.LocalDate kann JAXB ebenfalls nicht umgehen. Hierfür braucht es einen eigens erstellten Adapter.
  • Im Fachjargon wird die Richtung von Java zu XML als Marshaling bezeichnet, während Unmarshaling für die entgegengesetzte Richtung steht.   

XML-Annotationen

Neueste Videos

JAXB für Einsteiger: Tutorial am Beispiel einer CD-Sammlung

JAXB für Einsteiger: Tutorial am Beispiel einer CD-Sammlung

JAXB für Einsteiger: Tutorial am Beispiel einer CD-Sammlung

(Bild: Pixabay)

AudioCD.java: Hier werden die Attribute der Audio-CD definiert

AudioCD.java: Hier werden die Attribute der Audio-CD definiert

AudioCD.java: Hier werden die Attribute der Audio-CD definiert

(Bild: Screenshot)

MusicDB.java: Die Musiksammlung besteht aus einer Liste von Audio-CDs

MusicDB.java: Die Musiksammlung besteht aus einer Liste von Audio-CDs

MusicDB.java: Die Musiksammlung besteht aus einer Liste von Audio-CDs

(Bild: Screenshot)

Unser Tutorial handelt von einer CD-Sammlung, die in XML ausgegeben wird. Sie besteht aus mehreren Audio-CDs. Zu jeder Audio-CD werden der Interpret, das Erscheinungsjahr, der Name des Albums sowie die Lieder festgehalten.  

  • Zuerst sollte die Klasse erstellt werden, welche die Daten einer Audio-CD beinhaltet. Dazu gehören der Interpret, das Erscheinungsjahr, das Album sowie die Lieder, die sich auf der CD befinden.   
  • Um die Ausgabe im XML-Format besser zu steuern, sind XML-Annotationen erforderlich, welche unter Java mit @ beginnen.
  • Das Wurzelelement in der XML-Datei kann mittels der folgenden Annotation festgelegt werden: @XmlRootElement(name = “Audiocd”)
  • Oberhalb der Getter- oder Setter-Methoden können Sie eine Annotation einfügen, die einen alternativen Namen für ein Java-Attribut festlegt. Beispielsweise soll anstelle des Attributs year Erscheinungsjahr ausgegeben werden: @XmlElement(name = “Erscheinungsjahr”)
  • Die Reihenfolge der Attribute wird über die Annotation @XmlType( propOrder = { “artist”, “title”, “year”, “songlist”} ) festgelegt. Das bewirkt, dass in der XML-Datei  zuerst der Name des Interpreten, gefolgt vom Namen des Albums, dem Erscheinungsjahr sowie der Liste mit den Liedern erscheint. Ansonsten richtet sich die Reihenfolge nach der Java-Datei.
  • Als Nächstes erstellen Sie eine neue Java-Klasse, genannt MusicDB, welche eine Liste von Audio-CDs beinhaltet. Darüber hinaus wird hier der Name der Musiksammlung sowie der Ort der Musiksammlung festgehalten. Im Prinzip wird hier so ähnlich vorgegangen wie in der weiter oben erwähnten Java-Datei.

Von Java-Objekten zu XML-Dateien

Neueste Videos

AudioCDMain.java: Hier werden mehrere Audio-CDs angelegt

AudioCDMain.java: Hier werden mehrere Audio-CDs angelegt

AudioCDMain.java: Hier werden mehrere Audio-CDs angelegt

(Bild: Screenshot)

AudioCDMain.java: Erstellen der Musiksammlung

AudioCDMain.java: Erstellen der Musiksammlung

AudioCDMain.java: Erstellen der Musiksammlung

(Bild: Screenshot)

AudioCDMain.java: Wandelt den Code in XML um

AudioCDMain.java: Wandelt den Code in XML um

AudioCDMain.java: Wandelt den Code in XML um

(Bild: Screenshot)

Die Umwandlung selbst erfolgt in einem Testprogramm, genauer gesagt in der Main-Methode.

  • Zuerst erstellen Sie mehrere Instanzen vom Typ Audio-CD, sodass mehrere Audio-CDs angelegt werden.
  • Außerdem wird eine Instanz der Musiksammlung vom Typ MusicDB gebraucht.
  • Zusätzlich muss JAXB wissen, welche Java-Klasse, das Wurzelelement beinhaltet. In unserem Fall ist das die MusicDB-Klasse: JAXBContext context = JAXBContext.newInstance(MusicDB.class);
  • Die Umwandlung erfolgt mittels der Marshaller-Instanz, welche mit der weiter oben erwähnten JAXB-Methode verknüpft wird: Marshaller m = context.createMarshaller();
  • Die Marshaller-Methode hält weitere Optionen bereit, wie zum Beispiel, dass das XML-Dokument formatiert ausgegeben wird: .setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

Das ganze in die umgekehrte Richtung

Neueste Videos

AudioCDMain.java: JAXB generiert aus einer XML-Datei Java-Objekte

AudioCDMain.java: JAXB generiert aus einer XML-Datei Java-Objekte

AudioCDMain.java: JAXB generiert aus einer XML-Datei Java-Objekte

(Bild: Screenshot)

Die XML-Datei wurde bereits von JAXB formatiert

Die XML-Datei wurde bereits von JAXB formatiert

Die XML-Datei wurde bereits von JAXB formatiert

(Bild: Screenshot)

Grundsätzlich verläuft die Umwandlung in die andere Richtung auf eine ähnliche Arte und Weise:

  • Zuerst wird eine Instanz der Unmarshaller-Methode erstellt: Unmarshaller um = context.createUnmarshaller();
  • Anschließend braucht die Unmarshaller-Instanz den Namen der zuvor erstellten XML-Datei: MusicDB mdb2 = (MusicDB) um.unmarshal(new FileReader(MUSICDB_XML));

Video: Java installieren und updaten

Java installieren und updaten

Möchten Sie Ihre Programmierkenntnisse noch einmal auffrischen, dann erklären wir hier die Basics und wie Sie Java programmieren lernen.

Neueste Software-Tipps