Sie sind hier
E-Book

JAXB 2.0

Ein Programmiertutorial für die Java Architecture for XML Binding

AutorSamuel Michaelis, Wolfgang Schmiesing
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2006
Seitenanzahl399 Seiten
ISBN9783446409156
CD zum Buch1
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis27,99 EUR

XML hat sich als universelles Format zur Speicherung und Verarbeitung von Daten etabliert. Zusammen mit Java ergibt sich eine Paarung mit einem großen Vorteil für die Datenverarbeitung - beide Technologien sind plattformunabhängig.

Doch jede zu verarbeitende XML-Datei muss erst in ein Java-Datenmodell umgewandelt werden. Das kann man mit der JAXP API jedes Mal aufwändig per Hand programmieren - oder per JAXB (Java API for XML Binding) automatisch generieren.

Einziger Wermutstropfen: Die Einarbeitung in JAXB ist recht aufwändig. Genau hierbei unterstützt das vorliegende Buch den Entwickler. Die Einführung vermittelt alle unmittelbar für das Verständnis von JAXB notwendigen Konzepte von XML Schema und behandelt typische Probleme, die bei der Umwandlung von XML-Datenmodellen in Java-Datenmodelle auftreten, und liefert die passenden Lösungen.

Der Hauptteil ist ein umfassendes JAXB-Programmiertutorial. Von der XML-Variante des "Hallo-Welt"-Beispiels ausgehend werden alle Aspekte der JAXB behandelt. Die letzten Beispiele geben schließlich Denkanstösse, wo überall die JAXB sinnvoll verwendet werden kann - neu-deutsch "JAXB Best Practice". Den Abschluss bildet eine JAXB-Kurzreferenz.

Die Autoren

Samuel Michaelis ist Software-Architekt, Wolfgang Schmiesing Berater und Projektleiter. Beide Autoren sind für die Innovations Softwaretechnologie GmbH in Immenstaad tätig. 

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

6 Java zu XML-Schema (S. 193)

Eine der großen Neuerungen der Version 5 von Java sind die Annotationen. Informationen zu Java-Elementen, die bisher nur in Kommentaren oder getrennten Dateien gespeichert wurden, können nun direkt im Java-Quelltext aufgenommen werden und sind mit den Mitteln der Reflection-API programmatisch verfügbar.

Nicht alle Entwickler haben diese Neuerung mit Begeisterung begrüßt – es ist abzusehen, dass tausendundeine API sich der Annotationen mehr oder weniger geschickt annehmen werden – und statt der ach so einfach verständlichen POJOs wird es vielleicht bald von MAJOs wimmeln, „Massively Annotated Java Objects". Die Version 2.0 der Java Architecture for XML Binding bedient sich ausgiebig der Annotationen und in diesem Fall, wie wir finden, auf verführerisch praktische Art und Weise. In den vorherigen Kapiteln war stets ein XML-Schema Gegenstand des Beispiels und wie man ein Java-Datenmodell daraus zaubern kann. In diesem Kapitel beschäftigen wir uns mit dem Rückweg, den Annotationen sei Dank, und zwar wie wir von einem Java- Datenmodell passendes XML erzeugen können, indem wir für die einzelnen Java- Elemente durch die entsprechenden JAXB-Annotationen definieren, wie das Element in XML abgebildet werden soll.

Dieser Weg zurück ist das Besondere der JAXB 2.0. Während in früheren Versionen das aus einem XML-Schema erzeugte Java-Datenmodell nicht mit sinnvollem Aufwand für ein anderes XML-Schema angepasst werden konnte, bemüht sich die Version 2.0 um eine bidirektionale Abbildung von XML-Schema auf Java. Diese Abbildung mag vielleicht noch nicht in jedem Fall astrein sein – funktioniert in der Regel aber erstaunlich gut, wie wir in den kommenden Abschnitten darstellen werden.

Nun unterscheiden sich Java und XML-Datenstrukturen erheblich voneinander. Wo in Java eine Java Bean-Eigenschaft definiert ist, kann im XML ein Attribut, ein Element oder ein verschachtelter Datentyp stehen. Während in Java die Reihenfolge der definierten Java Bean-Eigenschaften irrelevant ist, muss für XML die Reihenfolge von Unterelementen explizit festgelegt (oder freigelassen) werden. Daher ist es für viele Fälle notwendig, die gewünschte Abbildung zu konfigurieren.

Im vorigen Teil des Buches haben wir uns mit den Bindungskonfigurationen befasst, die unmittelbar an einem XML-Schema hängen und dort diese Konfigurationen vorhalten. Das folgende Kapitel wird sich nun mit den Konfigurationen beschäftigen, die wir per Annotationen an Klassen, Variablen und Methoden anfügen können, um so eine bestimmte Form der Abbildung von Java in ein XML-Format zu erzielen. Die Annotationen der JAXB stellen im Moment einen Großteil der in der Java 5 Core API definierten Annotationen dar. Die Annotationen sind im Paket javax. xml.bind.annotations zusammengefasst.

Aufbau des Kapitels

Nutzung der API ohne ein vorgegebenes Schema
Einfache Elementkonfigurationen
Elementlisten, Referenzen und Elementmischung
Enumerationen
Eigene Typbindungen definieren
Mit unbekannten XML-Elementen und Attributen arbeiten
Objektgraphen in XML abbilden
Elemente über Factory-Klassen definieren

Inhaltsverzeichnis
Inhalt5
Vorwort11
Java Architecture for XML Binding 2.011
Technologieeinführung12
Programmiertutorials12
Referenz12
Feedback13
1 JAXB im Überblick15
1.1 Ziele15
1.2 Entstehung18
1.3 Architektur19
1.3.1 Annotationen21
1.3.2 Der Schema-Compiler22
1.3.3 Der Schema-Generator23
1.3.4 Das Binding Framework24
1.4 1.0 + 1.0 = 2.0?28
2 Basistechnologien31
2.1 XML-Schema31
2.1.1 Namespaces verwenden35
2.1.2 Elementdeklarationen in XML-Schema38
2.1.3 Vererbung49
2.1.4 Kardinalitäten51
2.1.5 Offene Schemas definieren52
2.1.6 Namespaces importieren und referenzieren54
2.1.7 Eindeutigkeit durch ID und IDREF57
2.1.8 Dokumentation mit Annotationen59
2.1.9 Das fertige Beispielschema60
2.2 XPath62
2.2.1 Die XPath-Sicht auf XML63
2.2.2 XPath-Ausdrücke verwenden64
2.2.3 Beispiele65
2.2.4 XPath in Java67
2.3 ANT69
2.3.1 ANT-Übersicht69
2.3.2 Installation und Aufruf70
2.3.3 Häufig verwendete Elemente71
2.3.4 Benutzerdefinierte Tasks72
2.3.5 xjc und schemaGen Tasks72
2.3.6 Ein Beispiel73
3 Hallo JAXB!75
3.1 Systemvoraussetzungen75
3.2 Die Entwicklungsumgebung einrichten76
3.2.1 JAXB-Referenzimplementierung installieren76
3.2.2 Die JAXB-Bibliotheken einbinden76
3.2.3 Die Struktur des Beispielprojekts77
3.3 Am Anfang steht immer: Hallo Welt!78
3.3.1 Der Weg von Java zu XML78
3.3.2 Der Weg von XML zu Java81
3.4 Zusammenfassung83
4 JAXB-API85
4.1 Die ersten Schritte86
4.1.1 Am Anfang war der JAXBContext86
4.1.2 Die Klasse JAXBIntrospector verwenden89
4.1.3 Objekte erzeugen mit der ObjectFactory91
4.1.4 Zusammenfassung92
4.2 Marshalling93
4.2.1 Das Marshaller-Objekt anlegen93
4.2.2 Den Marshalling-Prozess starten94
4.2.3 Den Marshalling-Prozess konfigurieren95
4.2.4 Das fertige Beispiel97
4.2.5 Marshalling beliebiger Objekte99
4.2.6 Zusammenfassung100
4.3 Unmarshalling101
4.3.1 Das Unmarshaller-Objekt anlegen101
4.3.2 Den Unmarshalling-Prozess starten102
4.3.3 Den Unmarshalling-Prozess konfigurieren103
4.3.4 Das fertige Beispiel103
4.3.5 Das xsi:type- Attribut beim Unmarshalling verwenden104
4.3.6 Elemente ohne @XMLRootElement verarbeiten105
4.3.7 Unmarshalling von Teilen eines XML-Dokuments107
4.3.8 Flexibles Unmarshalling nutzen109
4.3.9 Zusammenfassung111
4.4 Validierung111
4.4.1 Beim Unmarshalling validieren112
4.4.2 Beim Marshalling validieren113
4.4.3 Benutzerdefinierte Validierung115
4.4.4 Zusammenfassung121
4.5 Callback-Mechanismen einsetzen121
4.5.1 Die Listener-Klasse verwenden122
4.5.2 Callback-Methoden auf Klassenebene definieren124
4.5.3 Zusammenfassung126
4.6 Die Binder-Komponente verwenden126
4.6.1 Eine DOM-Sicht erstellen127
4.6.2 Die Klasse javax.xml.bind.Binder127
4.6.3 Transformation mit unmarshal und marshal128
4.6.4 Navigation mit getXMLNode und getJAXBNode129
4.6.5 Synchronisation mit updateXML und updateJAXB130
4.6.6 Konkrete Anwendungsfälle131
4.6.7 Zusammenfassung137
5 XML-Schema zu Java139
5.1 Bindungskonfigurationen139
5.1.1 Eine Bindungskonfiguration definieren140
5.1.2 Bindungskonfigurationen per xjc-Task einbinden144
5.1.3 Den XJC-Schema-Compiler programmatisch starten144
5.1.4 Externe Bindungskonfigurationen auf der Kommandozeile148
5.1.5 Ein Wort zu Versionen148
5.1.6 Der Sichtbarkeitsbereich148
5.1.7 Zusammenfassung149
5.2 Die erste Bindungskonfiguration150
5.2.1 Zusammenfassung152
5.3 Fünf Bindungsdeklarationen für den Alltag152
5.3.1 Aufzählungen anpassen mit jaxb:collectionType152
5.3.2 Paketnamen anpassen mit jaxb:package154
5.3.3 Generierte Klassen anpassen mit jaxb:class156
5.3.4 Änderungen auf Komponentenebene mit jaxb:property159
5.3.5 Dokumentieren mit jaxb:javadoc166
5.3.6 Zusammenfassung169
5.4 XML-Bezeichner anpassen169
5.4.1 Einzelne Namenskonflikte auflösen170
5.4.2 Präfixe und Suffixe mit jaxb:nameXmlTransform171
5.4.3 Unterstriche verarbeiten mit jaxb:underScoreBinding173
5.4.4 Bezeichner in Enumerationen174
5.4.5 Verwenden von Java-Schlüsselwörtern als Bezeichner180
5.4.6 Java-Namenskonventionen182
5.4.7 Zusammenfassung182
5.5 Datentypen anpassen182
5.5.1 Datentypen explizit angeben mit jaxb:baseType183
5.5.2 Datentypen konvertieren mit jaxb:javaType187
5.5.3 Zusammenfassung195
5.6 Deklarationen überlagern196
5.7 Noch mehr Bindungsdeklarationen199
5.7.1 Ableiten von einer Oberklasse mit xjc:superClass200
5.7.2 Ein Wurzelinterface angeben mit xjc:superInterface201
5.7.3 Erweiterung von jaxb:javaType mit xjc:javaType203
5.7.4 Das Experiment: xjc:simple205
5.7.5 Zusammenfassung206
6 Java zu XML-Schema207
6.1 JAXBContext und JAXBElement ganz ohne Schema208
6.2 Einfache Elementkonfigurationen215
6.2.1 Wurzelelemente mit @XmlRootElement definieren215
6.2.2 Der „Standardmodus“219
6.2.3 Abbildung als XML-Element explizit konfigurieren224
6.2.4 Java-Eigenschaften an XML- Attribute binden230
6.2.5 Java-Eigenschaften an XML-Elementinhalte binden235
6.2.6 Bindung an XML unterdrücken237
6.2.7 Reihenfolge der XML-Elemente beeinflussen239
6.2.8 Namen und Verschachtelung des XML-Typs einstellen244
6.2.9 XML-Elemente referenzieren248
6.2.10 Namespace konfigurieren251
6.3 Listen und Elementmischungen257
6.3.1 Der „Standardmodus“ für Java- Arrays und Java-Listen258
6.3.2 Listen und Arrays an simpleType/list-Deklarationen binden263
6.3.3 Mehrere Elemente im gleichen Feld speichern265
6.3.4 Elementlisten verpacken277
6.3.5 Mischungen von Elementen und Text280
6.4 Enumerationen284
6.4.1 Enumerationen an XML binden: Standardverhalten285
6.4.2 Bindung von Enumerationen konfigurieren286
6.5 Eigene Typbindungen definieren289
6.5.1 Basisdatentyp als Speicherdatentyp291
6.5.2 Komplexe Datentypen als Speicherdatentypen294
6.6 Unbekannte Attribut- und Elementwerte binden298
6.6.1 Wildcard- Attribute mit @XmlAnyAttribute definieren298
6.6.2 Wildcard-Elemente per @XmlAnyElement deklarieren300
6.6.3 Lax fischen302
6.7 Objektgraphen in XML abbilden304
6.8 Elemente über Factory-Klassen definieren309
7 JAXB-Referenz313
7.1 XJC Kommandozeilenbefehl313
7.2 XJC ANT-Task315
7.3 schemaGen-Kommandozeilenbefehl317
7.4 schemaGen- ANT- Task318
7.5 JAXB- Annotationen320
7.5.1 XmlAccessorOrder320
7.5.2 XmlAccessorType321
7.5.3 XmlAnyAttribute325
7.5.4 XmlAnyElement326
7.5.5 XmlAttachmentRef328
7.5.6 XmlAttribute328
7.5.7 XmlElement330
7.5.8 XmlElementDecl332
7.5.9 XmlElementRef334
7.5.10 XmlElementRefs335
7.5.11 XmlElements337
7.5.12 XmlElementWrapper338
7.5.13 XmlEnum339
7.5.14 XmlEnumValue340
7.5.15 XmlID341
7.5.16 XmlIDREF342
7.5.17 XmlInlineBinaryData344
7.5.18 XmlList344
7.5.19 XmlJavaTypeAdapter345
7.5.20 XmlJavaTypeAdapters346
7.5.21 XmlMimeType347
7.5.22 XmlMixed347
7.5.23 XmlNs348
7.5.24 XmlRegistry348
7.5.25 XmlRootElement349
7.5.26 XmlSchema350
7.5.27 XmlSchemaType352
7.5.28 XmlSchemaTypes353
7.5.29 XmlTransient354
7.5.30 XmlType355
7.5.31 XmlValue356
7.6 Typkonversionen Java zu XML-Schema357
7.7 Typkonversionen XML-Schema zu Java359
7.8 XML-Elemente der Bindungskonfiguration360
7.8.1 Globale Einstellungen360
7.8.2 Schemaspezifische Einstellungen373
7.8.3 Komponentenspezifische Einstellungen377
Register395

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

Arzneimittel Zeitung

Arzneimittel Zeitung

Die Arneimittel Zeitung ist die Zeitung für Entscheider und Mitarbeiter in der Pharmabranche. Sie informiert branchenspezifisch über Gesundheits- und Arzneimittelpolitik, über Unternehmen und ...

BEHINDERTEPÄDAGOGIK

BEHINDERTEPÄDAGOGIK

Für diese Fachzeitschrift arbeiten namhafte Persönlichkeiten aus den verschiedenen Fotschungs-, Lehr- und Praxisbereichen zusammen. Zu ihren Aufgaben gehören Prävention, Früherkennung, ...

Berufsstart Bewerbung

Berufsstart Bewerbung

»Berufsstart Bewerbung« erscheint jährlich zum Wintersemester im November mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

crescendo

crescendo

Die Zeitschrift für Blas- und Spielleutemusik in NRW - Informationen aus dem Volksmusikerbund NRW - Berichte aus 23 Kreisverbänden mit über 1000 Blasorchestern, Spielmanns- und Fanfarenzügen - ...

Deutsche Hockey Zeitung

Deutsche Hockey Zeitung

Informiert über das nationale und internationale Hockey. Die Deutsche Hockeyzeitung ist Ihr kompetenter Partner für Ihren Auftritt im Hockeymarkt. Sie ist die einzige bundesweite Hockeyzeitung ...

DGIP-intern

DGIP-intern

Mitteilungen der Deutschen Gesellschaft für Individualpsychologie e.V. (DGIP) für ihre Mitglieder Die Mitglieder der DGIP erhalten viermal jährlich das Mitteilungsblatt „DGIP-intern“ ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

filmdienst#de

filmdienst#de

filmdienst.de führt die Tradition der 1947 gegründeten Zeitschrift FILMDIENST im digitalen Zeitalter fort. Wir begleiten seit 1947 Filme in allen ihren Ausprägungen und Erscheinungsformen.  ...