JAXB 2.0 - Ein Programmiertutorial für die Java Architecture for XML Binding

Samuel Michaelis, Wolfgang Schmiesing

JAXB 2.0

Ein Programmiertutorial für die Java Architecture for XML Binding

2006

399 Seiten

Format: PDF, Online Lesen

E-Book: €  27,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446409156

 

Inhalt

5

Vorwort

11

Java Architecture for XML Binding 2.0

11

Technologieeinführung

12

Programmiertutorials

12

Referenz

12

Feedback

13

1 JAXB im Überblick

15

1.1 Ziele

15

1.2 Entstehung

18

1.3 Architektur

19

1.3.1 Annotationen

21

1.3.2 Der Schema-Compiler

22

1.3.3 Der Schema-Generator

23

1.3.4 Das Binding Framework

24

1.4 1.0 + 1.0 = 2.0?

28

2 Basistechnologien

31

2.1 XML-Schema

31

2.1.1 Namespaces verwenden

35

2.1.2 Elementdeklarationen in XML-Schema

38

2.1.3 Vererbung

49

2.1.4 Kardinalitäten

51

2.1.5 Offene Schemas definieren

52

2.1.6 Namespaces importieren und referenzieren

54

2.1.7 Eindeutigkeit durch ID und IDREF

57

2.1.8 Dokumentation mit Annotationen

59

2.1.9 Das fertige Beispielschema

60

2.2 XPath

62

2.2.1 Die XPath-Sicht auf XML

63

2.2.2 XPath-Ausdrücke verwenden

64

2.2.3 Beispiele

65

2.2.4 XPath in Java

67

2.3 ANT

69

2.3.1 ANT-Übersicht

69

2.3.2 Installation und Aufruf

70

2.3.3 Häufig verwendete Elemente

71

2.3.4 Benutzerdefinierte Tasks

72

2.3.5 xjc und schemaGen Tasks

72

2.3.6 Ein Beispiel

73

3 Hallo JAXB!

75

3.1 Systemvoraussetzungen

75

3.2 Die Entwicklungsumgebung einrichten

76

3.2.1 JAXB-Referenzimplementierung installieren

76

3.2.2 Die JAXB-Bibliotheken einbinden

76

3.2.3 Die Struktur des Beispielprojekts

77

3.3 Am Anfang steht immer: Hallo Welt!

78

3.3.1 Der Weg von Java zu XML

78

3.3.2 Der Weg von XML zu Java

81

3.4 Zusammenfassung

83

4 JAXB-API

85

4.1 Die ersten Schritte

86

4.1.1 Am Anfang war der JAXBContext

86

4.1.2 Die Klasse JAXBIntrospector verwenden

89

4.1.3 Objekte erzeugen mit der ObjectFactory

91

4.1.4 Zusammenfassung

92

4.2 Marshalling

93

4.2.1 Das Marshaller-Objekt anlegen

93

4.2.2 Den Marshalling-Prozess starten

94

4.2.3 Den Marshalling-Prozess konfigurieren

95

4.2.4 Das fertige Beispiel

97

4.2.5 Marshalling beliebiger Objekte

99

4.2.6 Zusammenfassung

100

4.3 Unmarshalling

101

4.3.1 Das Unmarshaller-Objekt anlegen

101

4.3.2 Den Unmarshalling-Prozess starten

102

4.3.3 Den Unmarshalling-Prozess konfigurieren

103

4.3.4 Das fertige Beispiel

103

4.3.5 Das xsi:type- Attribut beim Unmarshalling verwenden

104

4.3.6 Elemente ohne @XMLRootElement verarbeiten

105

4.3.7 Unmarshalling von Teilen eines XML-Dokuments

107

4.3.8 Flexibles Unmarshalling nutzen

109

4.3.9 Zusammenfassung

111

4.4 Validierung

111

4.4.1 Beim Unmarshalling validieren

112

4.4.2 Beim Marshalling validieren

113

4.4.3 Benutzerdefinierte Validierung

115

4.4.4 Zusammenfassung

121

4.5 Callback-Mechanismen einsetzen

121

4.5.1 Die Listener-Klasse verwenden

122

4.5.2 Callback-Methoden auf Klassenebene definieren

124

4.5.3 Zusammenfassung

126

4.6 Die Binder-Komponente verwenden

126

4.6.1 Eine DOM-Sicht erstellen

127

4.6.2 Die Klasse javax.xml.bind.Binder

127

4.6.3 Transformation mit unmarshal und marshal

128

4.6.4 Navigation mit getXMLNode und getJAXBNode

129

4.6.5 Synchronisation mit updateXML und updateJAXB

130

4.6.6 Konkrete Anwendungsfälle

131

4.6.7 Zusammenfassung

137

5 XML-Schema zu Java

139

5.1 Bindungskonfigurationen

139

5.1.1 Eine Bindungskonfiguration definieren

140

5.1.2 Bindungskonfigurationen per xjc-Task einbinden

144

5.1.3 Den XJC-Schema-Compiler programmatisch starten

144

5.1.4 Externe Bindungskonfigurationen auf der Kommandozeile

148

5.1.5 Ein Wort zu Versionen

148

5.1.6 Der Sichtbarkeitsbereich

148

5.1.7 Zusammenfassung

149

5.2 Die erste Bindungskonfiguration

150

5.2.1 Zusammenfassung

152

5.3 Fünf Bindungsdeklarationen für den Alltag

152

5.3.1 Aufzählungen anpassen mit jaxb:collectionType

152

5.3.2 Paketnamen anpassen mit jaxb:package

154

5.3.3 Generierte Klassen anpassen mit jaxb:class

156

5.3.4 Änderungen auf Komponentenebene mit jaxb:property

159

5.3.5 Dokumentieren mit jaxb:javadoc

166

5.3.6 Zusammenfassung

169

5.4 XML-Bezeichner anpassen

169

5.4.1 Einzelne Namenskonflikte auflösen

170

5.4.2 Präfixe und Suffixe mit jaxb:nameXmlTransform

171

5.4.3 Unterstriche verarbeiten mit jaxb:underScoreBinding

173

5.4.4 Bezeichner in Enumerationen

174

5.4.5 Verwenden von Java-Schlüsselwörtern als Bezeichner

180

5.4.6 Java-Namenskonventionen

182

5.4.7 Zusammenfassung

182

5.5 Datentypen anpassen

182

5.5.1 Datentypen explizit angeben mit jaxb:baseType

183

5.5.2 Datentypen konvertieren mit jaxb:javaType

187

5.5.3 Zusammenfassung

195

5.6 Deklarationen überlagern

196

5.7 Noch mehr Bindungsdeklarationen

199

5.7.1 Ableiten von einer Oberklasse mit xjc:superClass

200

5.7.2 Ein Wurzelinterface angeben mit xjc:superInterface

201

5.7.3 Erweiterung von jaxb:javaType mit xjc:javaType

203

5.7.4 Das Experiment: xjc:simple

205

5.7.5 Zusammenfassung

206

6 Java zu XML-Schema

207

6.1 JAXBContext und JAXBElement ganz ohne Schema

208

6.2 Einfache Elementkonfigurationen

215

6.2.1 Wurzelelemente mit @XmlRootElement definieren

215

6.2.2 Der „Standardmodus“

219

6.2.3 Abbildung als XML-Element explizit konfigurieren

224

6.2.4 Java-Eigenschaften an XML- Attribute binden

230

6.2.5 Java-Eigenschaften an XML-Elementinhalte binden

235

6.2.6 Bindung an XML unterdrücken

237

6.2.7 Reihenfolge der XML-Elemente beeinflussen

239

6.2.8 Namen und Verschachtelung des XML-Typs einstellen

244

6.2.9 XML-Elemente referenzieren

248

6.2.10 Namespace konfigurieren

251

6.3 Listen und Elementmischungen

257

6.3.1 Der „Standardmodus“ für Java- Arrays und Java-Listen

258

6.3.2 Listen und Arrays an simpleType/list-Deklarationen binden

263

6.3.3 Mehrere Elemente im gleichen Feld speichern

265

6.3.4 Elementlisten verpacken

277

6.3.5 Mischungen von Elementen und Text

280

6.4 Enumerationen

284

6.4.1 Enumerationen an XML binden: Standardverhalten

285

6.4.2 Bindung von Enumerationen konfigurieren

286

6.5 Eigene Typbindungen definieren

289

6.5.1 Basisdatentyp als Speicherdatentyp

291

6.5.2 Komplexe Datentypen als Speicherdatentypen

294

6.6 Unbekannte Attribut- und Elementwerte binden

298

6.6.1 Wildcard- Attribute mit @XmlAnyAttribute definieren

298

6.6.2 Wildcard-Elemente per @XmlAnyElement deklarieren

300

6.6.3 Lax fischen

302

6.7 Objektgraphen in XML abbilden

304

6.8 Elemente über Factory-Klassen definieren

309

7 JAXB-Referenz

313

7.1 XJC Kommandozeilenbefehl

313

7.2 XJC ANT-Task

315

7.3 schemaGen-Kommandozeilenbefehl

317

7.4 schemaGen- ANT- Task

318

7.5 JAXB- Annotationen

320

7.5.1 XmlAccessorOrder

320

7.5.2 XmlAccessorType

321

7.5.3 XmlAnyAttribute

325

7.5.4 XmlAnyElement

326

7.5.5 XmlAttachmentRef

328

7.5.6 XmlAttribute

328

7.5.7 XmlElement

330

7.5.8 XmlElementDecl

332

7.5.9 XmlElementRef

334

7.5.10 XmlElementRefs

335

7.5.11 XmlElements

337

7.5.12 XmlElementWrapper

338

7.5.13 XmlEnum

339

7.5.14 XmlEnumValue

340

7.5.15 XmlID

341

7.5.16 XmlIDREF

342

7.5.17 XmlInlineBinaryData

344

7.5.18 XmlList

344

7.5.19 XmlJavaTypeAdapter

345

7.5.20 XmlJavaTypeAdapters

346

7.5.21 XmlMimeType

347

7.5.22 XmlMixed

347

7.5.23 XmlNs

348

7.5.24 XmlRegistry

348

7.5.25 XmlRootElement

349

7.5.26 XmlSchema

350

7.5.27 XmlSchemaType

352

7.5.28 XmlSchemaTypes

353

7.5.29 XmlTransient

354

7.5.30 XmlType

355

7.5.31 XmlValue

356

7.6 Typkonversionen Java zu XML-Schema

357

7.7 Typkonversionen XML-Schema zu Java

359

7.8 XML-Elemente der Bindungskonfiguration

360

7.8.1 Globale Einstellungen

360

7.8.2 Schemaspezifische Einstellungen

373

7.8.3 Komponentenspezifische Einstellungen

377

Register

395

 

© 2009-2024 ciando GmbH