xs:element - RWTH Aachen University

Werbung
Java-Werkzeuge zur Verarbeitung von XML: Ein Vergleich
1. Einleitung und Motivation ........................................................................................................................ 2
2. Repräsentation per Data-Binding ............................................................................................................. 5
2.1. Prinzip ................................................................................................................................................ 5
2.2. Implementierung und Verwendung in Java ....................................................................................... 6
2.2.1. JAXB ............................................................................................................................................. 6
2.2.2. XMLBean ..................................................................................................................................... 7
3. Generische Repräsentation....................................................................................................................... 8
3.1. Represäntation als Datenbaum ......................................................................................................... 8
3.1.1. Prinzip DOM ................................................................................................................................ 8
3.1.2. Implementierung und Verwendung in Java ................................................................................ 8
3.2. Repräsentation als Ereignisstrom .................................................................................................... 11
3.2.1. Prinzip ....................................................................................................................................... 11
3.2.2. Implementierung und Verwendung in Java ............................................................................. 11
4. Spezialisierte Programmiersprachen ...................................................................................................... 13
4.1. XPath ................................................................................................................................................ 13
4.1.1. Prinzip ....................................................................................................................................... 13
4.1.2. Implementierung und Verwendung in Java .............................................................................. 14
4.2. XQuery ............................................................................................................................................. 15
4.2.1. Prinzip ....................................................................................................................................... 15
4.2.2. Implementierung und Verwendung in Java .............................................................................. 16
4.3. XSLT .................................................................................................................................................. 16
4.3.1. Prinzip ....................................................................................................................................... 16
4.3.2. Implementierung und verwendung in Java .............................................................................. 17
5. Entscheidungshilfe und Bewertung ........................................................................................................ 18
6. Fazit und Ausblick ................................................................................................................................... 20
1
1. Einleitung und Motivation
Jeder der sich schon einmal mit XML beschäftigt hat, kennt das Problem: Welche Technik soll
zur Verarbeitung des XML-Dokumentes verwendet werden? Bevor auf diese Frage eingegangen
wird, folgt noch eine kurze Einführung in XML.
XML steht für eXtensible Markup Language und ist am 10.02.1998 vom World Wide Web
Consortium (W3C) standartisiert worden. Hierbei handelt es sich nicht um eine
Programmiersprache, sondern um eine Sprache, die Informationen definiert und strukturiert.
Sogar jemandem, der noch nie etwas mit Informatik zu tun hatte, wird es möglich sein, XML zu
verstehen. XML repräsentiert Daten in einer Baumstruktur, was wahrscheinlich der Grund ist,
warum die Sprache so einfach zu verstehen ist. Die Sprache besteht im wesentlichen aus
Elementen und Attributen, wobei die Namen jener frei wählbar sind. Wer schonmal mit HTML
in Kontakt getreten ist, dem wird XML ziemlich bekannt vorkommen.
Im Folgenden wird ein Beispiel für ein XML-Dokument gezeigt, welches im Laufe dieser Arbeit
immer wieder Verwendung findet. Die Logische Struktur eines XML-Dokumentes ist die
Anordnung in einem Baum, wobei die Elemente diese Baumes Knoten genannt werden. Jeder
Knoten kann beliebig viele Attribute enthalten. Viele syntaktische Vorgaben besitzt XML nicht.
Die Elemente werden in spitze Klammern gesetzt und wenn sie enden, sind sie zusätzlich mit
einem Schrägstrich versehen(„<>“; „</>“). Attribute eines Elementes befinden sich innerhalb
dieser Spitzen Klammern und werden dort mit einem Namen und einem zugehörigen Wert
hinterlegt.
2
Beispiel für ein XML-Dokument: „seminararbeit.xml“
<?xml version="1.0" encoding="UTF-8"?>
<Buecher anzahl=“3“>
<Buch>
<Titel>Java ist auf eine Insel</Titel>
<Autor>
<Vorname>Christian</Vorname>
<Nachname>Ullenboom</Nachname>
</Autor>
<ISBN>978-3-8362-1802-3</ISBN>
</Buch>
<Buch>
<Titel>Einstieg in XML</Titel>
<Autor>
<Vorname>Helmut</Vorname>
<Nachname>Vonhoegen</Nachname>
</Autor>
<ISBN>978-3-8362-1711-8</ISBN>
</Buch>
<Buch>
<Titel>Java und XML</Titel>
<Autor>
<Vorname>Michael</Vorname>
<Nachname>Scholz</Nachname>
</Autor>
<Autor>
<Vorname></Vorname>
<Nachname>Niedermeier</Nachname>
</Autor>
<ISBN>978-3-8362-1308-0</ISBN>
</Buch>
</Buecher>
Um bei XML Einschränkungen in der Struktur zu machen, gibt es die Mögichkeit Document Type
Definitions(DTD) zu verwenden. Diese Technologie wird hier aber nicht näher erläutert, da sie
nicht mehr weiterentwickelt wird und durch eine bessere und umfangreichere abgelöst wurde.
Hier ist die Rede von XML-Schema(Xsd). Schemas sind weitaus mächtiger als DTDs, da sie nicht
nur die Struktur eines XML-Dokumentes vorgeben können, sondern auch Einschränkungen der
Textinhalte
durch
Datentypen(integer,
string,
Längenbegrenzungen.
3
etc),
reguläre
Ausdrücke
oder
Beispiel für ein XML-Schema: „seminararbeit.xsd“
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Buecher">
<xs:complexType>
<xs:sequence>
<xs:element name="Buch" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Titel" type="xs:string" />
<xs:element name="Autor" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Vorname" type="xs:string" />
<xs:element name="Nachname" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ISBN" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Dieses Schema definiert ein Element „Buecher“ welches in einem XML-Dokument nur einmal
vorkommen darf. Teil des Elementes „Buecher“ ist wiederum ein anderes Element „Buch“,
welches im XML beliebig oft innerhalb von „Buecher“ auftreten darf. Das Element „Buch“
beinhaltet drei weitere Elemente: Titel, Autor und ISBN, wobei ersteres und letzteres im XMLDokument String-Inhalte haben müssen.
Zurück zur eigentlichen Frage, zur Wahl der optimalen Technologie. Die Antwort auf diese Frage
ist nicht einfach, denn es gibt viele Möglichkeiten. In dieser Arbeit wird versucht dem JavaProgrammierer aufzuzeigen, welche Möglichkeiten er überhaupt hat. Die meisten kennen zwar
viele Techniken, nutzen aber nur eine oder zwei, da sie mit ihnen vertraut sind und die
speziellen Vorteile der anderen vielleicht gar nicht kennen. Viele Leute haben auch einfach
keine Zeit, sich in alternative Techniken einzulesen, weil zum Beispiel der strikte Zeitplan des
4
Projektes es nicht zulässt oder man nicht die Zeit zur Verfügung gestellt bekommt, sich in diese
Richtungen fortzubilden.
2. Repräsentation per Data-Binding
2.1. Prinzip
Bei Data-Binding werden XML-Strukturen durch Klassen und Interfaces dargestellt. Ein Element
in XML stellt nachher in Java eine Klasse oder ein interface da. Unterelemente werden als
Membervariablen in den Klassen der übergeordneten Elemente angelegt. Zugriffe auf diese
Unterelemente und Attribute werden von Getter- und Setter-Methoden gesteuert. Auf diese
Weise fühlt sich alles an wie vertrautes Java, weil man quasi von der XML-Ebene entfernt ist.
Im Regelfall ist bei der Variante des Data-Bindings eine Schemadatei vorhanden. Aus dieser
Datei können dann komplexe Objektstrukturen generiert werden. Durch die Nutzung solcher
Schemadateien wird die Typsicherheit gewährleistet. Wenn die Schemadatei vorgibt, dass ein
Element den Typ „xs:string“ hat, dann verlangt die Setter-Methode einen String als Übergabe
und die Getter-Methode einen String als Rückgabe. Das Überführen von XML in
Objektstrukturen nennt man Unmarshalling oder Deserialisierung.
Aber was macht man, wenn kein Schema vorliegt? Das könnte durchaus ein Problem sein. Jetzt
ist der Entwickler gefragt. Er hat die Möglichkeit selber ein Schema zu erstellen und daraus
dann Java-Code generieren zu lassen oder den Java-Code selber zu schreiben, was ein großer
Aufwand sein kann.
Ein weiterer Nachteil den die Data-Bindings mit sich bringen ist, dass durch das Erzeugen der
Objektstrukturen bei großen XML-Dokumenten, die Speicher- und Prozessorlast stark zunimmt.
5
2.2. Implementierung und Verwendung in Java
2.2.1. JAXB
Wie schon gesagt, kann aus Schemadateien, Java-Code generiert werden. Natürlich kann die
Java Architecture for XML Binding (JAXB) das auch. JAXB ist ein Java Standard und deswegen
ziemlich einfach zu nutzen.
Beispiel für generierten code von JAXB
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
6
2.2.2. XMLBean
XMLBean ist neben JAXB wohl die populärste Technologie.Es ist ein OpenSource Projekt
welches von Apache ins leben gerufen wurde. Aber warum sollte XMLBean verwendet werden,
wenn JAXB sogar ein Java Standard ist?
Da XMLBean nach dem Umwandeln in Java-Code, das XML behält, ist es hier möglich XPath und
XQuery mit in die Verarbeitung einzubeziehen. Dieser Aspekt ist ein riesiger Vorteil gegenüber
JAXB. XPath und XQuery werden im weitern Verlauf der Arbeit noch näher erläutert.
Ein wesentlicher Nachteil von XMLBean ist, dass es für alle Elemente und Typen – die im
Schema definiert sind – Klassen und Interfaces anlegt, wodurch dann erhebliche CodeAbhängigkeiten entstehen.
Bei XMLBean werden drei APIs angeboten: XmlObject für den Zugriff auf alle im Schema
definierten Elemente, XMLCursor, der den Zugriff auf die XML-Daten regelt und schließlich
SchemaType, welches den Zugriff auf die Schema-Metainformationen ermöglicht, wie z.B.
zulässige Werte einer Enumeration. Die XMLCursor API unterstützt die Nutzung von XPath und
XQuery durch die Methoden selectPath und execQuery
Beispiel für generierten code von XMLBean
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
7
3. Generische Repräsentation
3.1. Represäntation als Datenbaum
3.1.1. Prinzip DOM
Während Data-Binding das XML-Dokument durch spezifische Objekte repräsentiert(Für jedes
Element im XML werden Klassen mit gleichem Namen im Java Code angelegt), verwendet DOM
generische Klassen wie „Document“, „Element“ oder „Attribute“. Diese Klassen spiegeln genau
die Elemente wieder, wie sie bei XML vorkommen können. Im Allgemeinen gesagt, ist DOM ein
API, welches aus mehreren Interfaces besteht, die die teile eines XML Dokumentes
repräsentieren.
Das Document Object Model repräsentiert ein XML-Dokument als Datenbaum welcher in den
Arbeitsspeicher geladen wird. Das DOM ist ein Java Standard und kann wie JAXB relativ einfach
implementiert werden. Einmal im Arbeitsspeicher, kann überall in dem Baum auf Elemente
zugegriffen werden, wobei hier nicht nur gelesen werden kann, sondern auch Daten
manipuliert werden können. Der Baum muss als Objektstruktur für die gesamte Dauer der
Dokumentverarbeitung im Speicher gehalten werden.
3.1.2. Implementierung und Verwendung in Java
1Im
folgenden Beispiel
wird JAXP(Java API for XML Parsing) verwendet. JAXP ist eine
Abstaktionsschicht, die über verschiedenen Technologien liegt(DOM 3rd level, SAX 2.0.2, StAX,
XSLT 1.0 und XPath 1.0). Durch diese API ist es dem Programmierer möglich, einfach den Parser
zu wechseln, ohne den eigentlichen Code zu verändern.
1
http://openbook.galileocomputing.de/javainsel/javainsel_16_003.html
8
Beispiel für JAXP
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
3.1.2.1. JDOM
Hier stellt sich wieder die Frage: Warum denn etwas anderes nehmen als DOM? Es ist ja
schließlich ein Java Standard.
2JDOM(Java
DOM) ist speziell für Java entwickelt worden und somit nicht mehr
sprachenunabhängig, wie es DOM eigentlich ist. 3Trotz der eher stockenden Entwicklung erfreut
sich JDOM immer noch einer großen Beliebtheit. JDOM nutzt die Collection-API von Java und
erzielt dadurch eine bessere Performance als DOM, welches keine Rücksicht auf JavaDatenstrukturen nimmt. Es ist noch wichtig zu nennen, dass JDOM die SAX-API und einen
Parser(meist Xerces oder Crimson) nutzt um den Baum im Speicher aufzubauen.
Das JDOM API beinhaltet eine Factory-Klasse(SAXBuilder), während DOM keine Besitzt und auf
die vom JAXP API zurückgreifen muss.
2
3
http://openbook.galileocomputing.de/javainsel/javainsel_16_003.html
1.0 Sep 2004; 1.1 November 2007; 1.1.1 Jul 2009; 1.1.2 Okt 2011 http://www.jdom.org/news/index.html
9
Beispiel für JDOM
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
3.1.2.2. dom4j
Der große Vorteil von dom4j gegenüber JDOM ist, dass XPath Ausdrücke unterstützt werden.
Dadurch ist es möglich die relevanten Daten zu selektieren. Andernfalls müsste über
aufwändige Interationen per Java-Code gefiltern werden.
Einfaches Beispiel für dom4j
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
10
3.2. Repräsentation als Ereignisstrom
3.2.1. Prinzip
Bei den Streaming-Varianten ist kein wahlfreier Zugriff auf die Elemente möglich. Anders als bei
DOM, läuft der Parser stupide durch das Dokument. Außerdem sind die Streaming-Varianten
auf das Lesen der XML Daten beschränkt und können nicht wie bei DOM Daten manipulieren.
Weil hier aber während der Laufzeit schon übermittelt und geparst wird, werden schon
behandelte Elemente – sofort nach ihrer Benutzung – weggeworfen und vom garbage collector
verschluckt, wodurch weniger Speicher- und Prozessorlast vorliegt als bei DOM. Auf der einen
Seite ist dies ein großer Vorteil gegenüber DOM, auf der anderen Seite hat das Streaming auch
einen großen Nachteil, da nur eine reduzierte Sicht auf die Elemente möglich ist, nämlich nur
auf die aktuell behandelten Elemente. Genau dieser Aspekt ist eine große Gefahr, da XMLDokumente für das Streaming nicht wohlgeformt sein müssen.
3.2.2. Implementierung und Verwendung in Java
3.2.2.1. SAX
4SAX
arbeitet nach dem Push-Prinzip. Der Parser ruft nach dem Callback-Prinzip
selbstgeschriebene Methoden auf, sobald erkannte Elemente vorkommen, welche dann
Ereignisse auslösen. Der Programmierer muss zwei Komponenten zur Verfügung stellen,
nämlich den Produzenten und den Konsumenten. Der Produzent ist im unteren Beispiel die
Klasse „TestSAX“ und der Konsument ist die Klasse „ContentHandler“. Für ein einfaches Beispiel
wie hier, muss der Produzent lediglich einen Parser anlegen. Diesem muss dann noch der
Konsument zugewiesen werden und das zu parsende Dokument muss angegeben werden.
Außerdem hat man beim Produzenten noch die Möglichkeit den Parser zu konfigurieren Der
„ContentHandler“ ist ein wenig aufwändiger. Hier wird entschieden was mit bestimmten
Elementen geschehen soll. Die wichtigsten Ereignisse, die bei SAX eintreffen sind:
StartDocument, endDocument, startElement und endElement, welche über das Interface
ContentHandler als Methoden des selbstgeschriebenen ContentHandlers eingebunden werden.
Wichtig ist hier, dass diese Methoden alle während des Parsens vom XMLReader aufgerufen
4
http://vsr.informatik.tu-chemnitz.de/proseminare/xml04/doku/sax/
11
werden. Darüber hinaus gibt es einige andere Ereignisse auf die der „ContentHandler“
reagieren kann.
Beispiel für SAX
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
3.2.2.2. StAX
Bei StAX werden nicht wie bei SAX, Methoden bereitgestellt die vom Parser aufgerufen werden,
sondern immer aktiv der nächste Teil des XML-Dokumentes angefordert. Hierbei wird zwischen
Cursor und Iterator unterschieden, wobei der Iterator flexibler, aber aufwändiger zu
programmieren ist.
12
Beispiel für StAX
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
4. Spezialisierte Programmiersprachen
4.1. XPath
4.1.1. Prinzip
5XPath
ist eine Abfragesprache für XML-Dokumente. Es bietet die Möglichkeit durch die
Elemente und Attribute eines XML-Dokuments zu navigieren. Außerdem bietet die Sprache
viele Standardfunktionen6. XPath ist die Grundlage XSLT und XQuery.
XPath interpretiert alles in einem XML-Dokument als Knoten. Insgesamt gibt es sieben
verschiedene Knotentypen: Wurzelknoten, Elementknoten, Attributknoten, Textknoten,
Kommentarknoten, Namespaceknoten und Processing-Instruction-Knoten.
5
6
http://www.w3schools.com/xpath/default.asp
http://www.w3schools.com/xpath/xpath_examples.asp
13
Die Navigation erfolgt nun Schrittweise, getrennt durch Schrägstriche über die genannten
Knoten. Dabei hat man die Möglichkeit in verschiedene Richtungen bzw. auf verschiedenen
Achsen zu navigieren. Zum Beispiel kann zu dem Parent-Element(jedes XML-Element hat genau
einen Parent) oder zu einem Child-Element navigiert werden, sprich eine Ebene höher oder
eine Ebene tiefer in dem Datenbaum. XPath Ausdrücke geben immer eine Menge von Knoten
zurück.
Zu guter Letzt gibt es bei XPath die Möglichkeit Prädikate anzugeben. Prädikate geben immer
boolsche Werte zurück, also wahr oder falsch. Trifft für einen Knoten aus der Ergebnismenge
dieses Prädikat zu(wahr), bleibt der Knoten in der Menge, ist der Wert „falsch“, wird der Knoten
entfernt. Prädikate sind also eine Möglichkeit das Ergebnis zu filtern. Ein Hilfsmittel zur Navigation
stellen die vielen Standardfunktionen dar.
4.1.2. Implementierung und Verwendung in Java
Beispiel für eine XPath Implementierung
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
14
4.2. XQuery
4.2.1. Prinzip
Wie bereits im Abschnitt zuvor erwähnt wurde, ist XPath die Grundlage von XQuery. XQuery
wurde designed um XML-Daten abzufragen. Sie ist für XML das, was SQL für Datenbanken ist.
XQuery als Erweiterung von XPath:
XPath hat lediglich die Möglichkeit bestehende Knoten zurückzuliefern, XQuery hingegen kann
selbst welche erzeugen. Außerdem bietet XQuery das FLOWR Konstrukt, welches erlaubt, über
die Daten zu iterieren und Zwischenergebnisse zu speichern. XQuery bietet die Möglichkeit
benutzerdefinierte Funktionen zu erstellen.
Beispiel für einen XQuery Ausdruck (Aufruf am seminararbeit.xml)
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
15
4.2.2. Implementierung und Verwendung in Java
4.3. XSLT
4.3.1. Prinzip
XSLT steht für XSL Transformations. Da es bei HTML vordefinierte Tags gibt, weiß ein Browser
wie er HTML-Code anzeigen muss. Das Problem bei XML ist, dass die Tags frei wählbar sind und
der Browser dadurch nicht weiß, was er darstellen soll. XSLT benutzt XPath um durch XMLDokumente zu navigieren und transformiert XML-Dokumente in andere XML-Dokumente oder
einfach nur Text.
Durch die Transformation von XML-Dokumenten eröffnen sich große Möglichkeiten. Ein
nennenswerter Aspekt ist z.B., dass per XSLT Daten aus XML gefiltert werden können und als
HTML wieder ausgegeben werden können.
Von XML zu HTML
XSLT:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<html><table border="1"><tr><td>Autor</td><td>Titel</td><td>Abgabe</td></tr><tr>
<td><xsl:value-of select="concat(//Vorname, ' ', //Nachname)" /></td>
<td><xsl:value-of select="//Titel" /></td>
<td><xsl:value-of select="/Seminararbeit/@abgabetermin" /></td>
</tr></table></html>
</xsl:template>
</xsl:transform>
HTML Ausgabe
In dem obigen Beispiel wird eine einfache HTML-Tabelle mit zwei Zeilen aufgebaut. Die erste
Zeile beinhaltet selbstgeschriebenen Text. Die zweite Zeile enthält die Inhalte von den
16
Elementen, die die XPath-Ausdrücke zurückliefern. In der ersten Spalte werden sogar die
Textknoten konkateniert und dann zu einem String umgewandelt.
Außer dem Hinzufügen oder Entfernen von Elementen und Attributen im Ausgangsdokument,
kann über Elemente iteriert (for-each) oder sortiert(sort) werden. Zusätzlich können
Entscheidungen(if, choose) getroffen werden um nur gewünschte Inhalte zu manipulieren.
Über Schablonen(template) kann definiert werden, dass nur bestimmte Elemente verändert
werden, nämlich jene, auf die der XPath-Ausdruck im „match“-Attribut der Schablone zutrifft.
XSLT kann aber nicht nur genutzt werden um XML in HTML zu transformieren. Das
Ausgabeformat könnte auch einfach wieder ein XML-Dokument sein oder reiner Fließtext.
Einige erzeugen sich sogar Java-Code aus einem XML-Dokument mit Hilfe von XSLT.
4.3.2. Implementierung und verwendung in Java
Einfaches Beispiel für XSLT
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
17
Rekursives Beispiel für XSLT
Beispiel befindet sich im Anhang. Hier kommt ein anderes rein, da ich eine bessere Idee
habe!
5. Entscheidungshilfe und Bewertung
Es wurde deutlich, dass es keinen Königsweg gibt für die Wahl der Verarbeitungstechnik. Es
kommt auf die verschiedenen Kriterien an, welche Technik zum Einsatz kommt. Im Folgenden
werden die wesentlichen Vor- und Nachteile der einzelnen Technologien noch einmal
hervorgehoben.
18
JAXB
XMLBean
DOM
JDOM
Dom4j
SAX
StAX
XPath
XQuery
XSLT
+
+
+
+
+
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
Lesezugriff?
+
+
+
+
+
+
+
+
+
+
Schreibzugriff?
+
+
+
+
+
-
-
-
7
-
Aufwand
-
-
+
+
+
-
-
++
++
++
++
++
+
+
+
-
-
++
++
++
++
-
++
-
-
++
+
+
+
+
Wahlfreier
Zugriff möglich?
Dokumentgröße
unbegrenzt?
Dateizugriff
Typsicher?
Ist eine gute
Struktur
gefordert?
(+)
einfache
Lesezugriffe?
Aufwand
komplexe
Auswertungen?
Sollen Java
Standards
genutzt werden
7
Nur mit XQuery Update Facility
19
6. Fazit und Ausblick
Auf die Frage, welche Technik die optimale ist, kann keine konkrete Antwort gegeben werden.
Es ist viel mehr eine Frage davon, welche Eingangssituation vorliegt und wie sich das Ergebnis
verhalten soll.
Sollen z.B. Java Standards verwendet werden dann würden XMLBean, dom4j und JDOM als
Möglichkeit entfallen. Wiederum sind andere wie XPath, XQuery und XSLT nur in nicht aktuellen
Versionen verfügbar. Für den Fall, dass riesige Dateien vorliegen, bleibt kaum eine andere Wahl
als SAX oder StAX zu verwenden. Räumt der Vorgesetzte genug Zeit ein, um sich in andere
Technologien einzuarbeiten? Wenn nur gelesen werden soll, bietet sich jede Möglichkeit an.
Was aber, wenn der Inhalt manipuliert werden muss? Dann sollte man Data-Bindings nehmen
oder auf eine DOM Variante zurückgreifen. XQuery könnte es auch noch lösen, wenn die
Update Facility von XQuery verwendet wird. Ist gefordert, dass viele Inhalte gleich bleiben und
sich die Struktur nur verändert, sind XQuery und XSLT sicherlich gute Optionen.
Wenn sich jemand nun genau an dieser Stelle befindet, sollte er die Fakten zusammentragen
und die für sich geeignetste Variante abschätzen.
20
Herunterladen