jaxbErste Schritte mit Jaxb


Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was jaxb ist und warum ein Entwickler es verwenden möchte.

Es sollte auch alle großen Themen in jaxb erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für jaxb neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Code-Generierung aus XSD

Mit JAXB können Klassen aus einem in XSD definierten Modell generiert werden. Es ist dann möglich, das gegen diese XSD erstellte XML-Dokument direkt als Java-Instanzen zu lesen und diese Instanzen invers als XML-Dokument zu speichern.

Nehmen Sie die folgende XSD-Datei, die in einer Datei namens SimpleModel.xsd gespeichert ist

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://myCorp/schemas/simpleModel"
 xmlns:simple="http://myCorp/schemas/simpleModel"
 elementFormDefault="qualified"
 attributeFormDefault="unqualified">
 
 <complexType name="Person">
     <sequence>
         <element name="FirstName" type="string"/>
         <element name="LastName" type="string"/>
         <element name="DateOfBirth" type="dateTime"/>
     </sequence>
 </complexType>
 
</schema>
 

Sie können JAXB verwenden, um mit dieser Befehlszeile automatisch Klassen zu generieren, die dieser XSD entsprechen (vorausgesetzt, der Bin-Ordner Ihres JDK befindet sich in Ihrem Pfad).

xjc SimpleModel.xsd
 

Dadurch wird ein Paket basierend auf dem Namespace Ihrer XSD (hier mycorp.schemas.simplemodel) mit den folgenden Klassen generiert:

  • ObjectFactory.java
  • package-info.java
  • Person.java

Die ObjectFactory wird verwendet, um Instanzen der generierten Klassen zu erstellen. In manchen Fällen scheint dies eine triviale Hülle um eine

new Person();
 

In komplexeren Fällen werden jedoch die richtigen Wrapper für Ihre Instanzen erstellt, die den fehlenden Link zum ordnungsgemäßen Marshalling und Unmarshalling der Objekte in und aus XML bereitstellen .

Die package-info.java enthält allgemein Informationen zur XSD.

Alle anderen Dateien sind Klassen, die von dem in der XSD beschriebenen Modell abgeleitet wurden. Hier haben wir nur Person.java, da sich in unserem Modell nur ein Objekt befindet.

Mit anderen Kommandozeilen - Argumente jaxb und XJC geben Ihnen immense Macht über den generierten Code. XJC bietet auch die Möglichkeit, Plugins zu verwenden oder zu erstellen, um Beyoond zu nutzen und Dinge zu tun wie:

  • Lassen Sie den generierten Code eine Schnittstelle implementieren oder eine Klasse erweitern.
  • Automatische Generierung von toString, Hashcode, gleich usw. mit der Klasse.
  • Automatische Zuordnung zwischen XML-Typen (einfach oder komplex) und JavaType.
  • Injizieren Sie benutzerdefinierten Code oder Anmerkungen in den generierten Code.

Und sehr viel mehr

Sie können auch andere Tools verwenden, um mit xjc für Sie zu interagieren, Maven-Plugins (mindestens 4, die ich kenne), Ant-Task usw. Oft können diese Tools Dinge ausführen, die nur mit der Befehlszeilenreferenz der Referenzimplementierung schwer zu bekommen wären .

Installation oder Setup

Die JAXB-Referenzimplementierung (JAXB-RI) ist seit JDK 6 Update 3 im Java Development Kit enthalten.

Weitere Informationen darüber, welche JAXB-RI-Version in bestimmten Versionen des JDK enthalten ist, finden Sie im inoffiziellen JAXB-Handbuch .