© Excellent backgrounds/Shutterstock.com
Datenprojektion mit XMLBeam

Ein neuer Blick auf XML


Der Industriestandard XML ist so allgegenwärtig, dass es verwundern mag, noch etwas Neues zu entdecken. Die Java-Bibliothek XMLBeam setzt ein neues Konzept im Umgang mit DOM-Bäumen um. Anstatt die Java-Welt per Datenbindung mit XML zu koppeln, ­erlaubt sie es, Objekte aus der einen Welt in die jeweils andere Welt „zu projizieren“.

Datenbindungframeworks verbinden XML-Dokumente mit Java-Objekten, indem sie die Struktur der XML-Entitäten in einer Objekthierarchie nachbilden. Diese Objekthierarchien sind mitunter recht sperrig und können das Design eines Java-API erschweren. Um eine größere Trennung zwischen XML-Struktur und Java-Code zu erreichen, geht XMLBeam einen anderen Weg: Die Daten verbleiben im DOM-Baum und sind dennoch direkt in Form von Java-Typen nutzbar. Dazu wird ein Projektionsinterface mit Projektionsmethoden definiert. Diese legen fest, wie Daten aus dem Dokument gelesen oder in das Dokument geschrieben werden. Gleichzeitig können Instanzen dieser Projektionsinterfaces wie normale Java-Objekte verwendet werden. Sie sind das Bindeglied zwischen Java-Code und DOM-Baum.

Den Zugriff auf das Dokument spezifizieren XPath-Ausdrücke, die über Annotationen den Projektionsmethoden zugeordnet werden. Dies erlaubt es, mehrere Elemente oder Attribute zu einem Java-Objekt zu bündeln oder ein Element auf mehrere Java-Objekte aufzuteilen. Statt der Struktur des XML-Dokuments zu folgen, lässt sich eine eigene Sicht auf den zugehörigen DOM-Baum definieren. Dabei sind sowohl lesende als auch schreibende Methoden erlaubt. Natürlich ist die Flexibilität nicht kostenlos und so gibt es zwei Kriterien, welche die Verwendung von XMLBeam ausschließen: Falls das Dokument zu groß ist, um es als DOM-Baum im Speicher zu halten oder falls die Verarbeitungszeit der XPath-Ausdrücke die Performanceanforderungen überschreitet.

Ein erstes Beispiel (Listing 1) soll jetzt den Einstieg erleichtern: Der MSN-Wetterdienst (Tutorial unter [1]) liefert Wetterdaten in XML und soll uns Daten für eine erste Demonstration liefern.

Listing 1: Wetterdaten (Auszug)

<weatherdata> <weather ... degreetype="F" lat="50.5520210266113" lon="6.24060010910034" searchlocation="Monschau, Stadt Aachen, NW, Germany" ... > <current ... skytext="Clear" temperature="46"/> </weather> </weatherdata>

Wir definieren ein Projektionsinterface, um Wetterbeschreibung, Ort und Temperatur auszulesen. Das XML-Attribut searchlocation soll als Java-String, die Temperatur hingegen als Integer konvertiert werden. Entspr...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang