Artikel

 
Februar 2010 | Artikel

Xmappr: XML-Lesen einfach gemacht

(Link zum Artikel: http://www.it-republik.de/jaxenter/artikel/2862)

Schlanke Bibliothek für das Mapping von XML auf Java-Klassen

Text: Markus Stäuble
Das Datenformat XML ist als Basis vieler Konfigurations- und Datendateien nicht mehr aus Java-Projekten wegzudenken. Der Java-Entwickler steht damit vor der Aufgabe, diese Daten adäquat zu verarbeiten. Bei der Auswahl der passenden Technik hilft als erstes Kriterium, ob nur Lese- oder auch Schreibzugriff benötigt wird. Im Falle des Lesezugriffs steht mit Xmappr ein weiterer Kandidat zur Verfügung. Welche Anforderungen deckt die Bibliothek ab?
Teil 1   Teil 2   

Für die Verarbeitung von XML-Daten stehen inzwischen viele Java-Bibliotheken zur Verfügung. Stellvertretend seien hier Castor und XStream aufgeführt. Für das Einlesen (keine Ausgabemöglichkeit vorhanden) von XML-Daten gesellt sich Xmappr dazu. Die Bibliothek steht unter der BSD-Lizenz (Variante aus dem Jahr 2008) zur Verfügung. Als Voraussetzung gilt Java 5. Das Mapping der XML-Daten auf Java-Klassen kann mittels Annotationen oder XML-Konfiguration erfolgen. Für das Parsen setzt Xmappr (aktuelle Version: 0.9.2) auf den JSR-173-Standard StaX (Streaming API for XML). Im Fall von Java 6 ist dieses API durch das Paket javax.xml.stream bereits als Bordmittel dabei. Bei Java 5 muss es noch nachgerüstet werden. In den FAQ zu Xmappr wird als StaX-Parser Woodstock empfohlen.

Integration ins Projekt

Für die Integration in ein Java-6-Projekt reicht der Download der 86 KB großen Bibliothek (Name: xmappr-0.9.2.jar) aus. Im Fall von Java 5 wird noch ein StaX-Parser benötigt. Der empfohlene Parser Woodstock steht auch als Binärdatei zum Download bereit.

Für die Integration in ein Maven-Projekt steht ein Repository zur Verfügung. Nachfolgende Zeilen müssen der Projekt-POM an den entsprechenden Stellen hinzugefügt werden:

  1. <dependency>
  2. <groupId>org.xmappr</groupId>
  3. <artifactId>xmappr</artifactId>
  4. <version>0.9.2</version>
  5. </dependency>
  6. <repository>
  7. <id>xmappr-repo-googlecode</id>
  8. <name>Xmappr Repository</name>
  9. <url>http://xmappr.googlecode.com/svn/repo/</url>
  10. </repository>
Auf Tuchfühlung

Die Stärken von Xmappr zeigen sich am schnellsten in einem Beispiel. Als Grundlage soll nachfolgende XML-Datei dienen.

  1. <book language="de">
  2. <name>Buchname</name>
  3. <isbn>123456</isbn>
  4. </book>

Wie schon zu Anfang erwähnt, existieren in Xmappr zwei Möglichkeiten zur Abbildung von XML-Daten auf Java-Klassen: über Annotationen und über XML-Konfiguration.

Zunächst zu den Annotationen. Die Klasse selbst muss über die Annotation @RootElement markiert werden. Hierbei wird der Name des Einstiegsknotens angegeben. Elemente werden über die Annotation @Element und Attribute über @Attribute konfiguriert. Wenn keine direkte Korrelation über den Namen hergestellt werden kann, dann ist der Name als Parameter der Annotation anzugeben. Nachfolgendes Quellcodebeispiel mappt die obere XML-Datei auf die entsprechenden Instanzvariablen der Klasse Buch.

  1. @RootElement(name="book")
  2. public class Buch {
  3. @Element
  4. private String name;
  5. @Element
  6. private String isbn;
  7. @Attribute(name="language")
  8. private String language;
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15. public String getIsbn() {
  16. return isbn;
  17. }
  18. public void setIsbn(String isbn) {
  19. this.isbn = isbn;
  20. }
  21. public String getLanguage() {
  22. return language;
  23. }
  24. public void setLanguage(String language) {
  25. this.language = language;
  26. }
  27. }

Teil 1   Teil 2   

Anzeige

Kommentare

Gravatar RPR 15.02.2010
um 22:48 Uhr
Dazu stellt sich mir die Frage: Was ist der Vorteil gegenüber JAXB? Auch von Castor et. al.? Nimmt heute wirklich noch jemand diese ollen Libs her und wenn ja wozu? #zitieren

Anzeige

zurück zum Seitenanfang