Mit den JAXB-Tools "xjc" JAXB-Klassen aus einer XML-Schemadatei generieren
Verwenden Sie die JAXB-Tools (Java Architecture for XML Binding) "xjc", um eine XML-Schemadatei in vollständig annotierte Java-Klassen zu kompilieren.
Vorbereitende Schritte
Informationen zu diesem Vorgang
Verwenden Sie die JAXB-APIs und -Tools, um Zuordnungen zwischen einem XML-Schema und Java-Klassen zu erstellen. XML-Schemata beschreiben die Datenelemente und Beziehungen in einem XML-Dokument. Wenn eine Datenzuordnung oder -bindung vorhanden ist, können Sie XML-Dokumente in Java-Objekte und umgekehrt konvertieren. Anschließend können Sie auf die in einem XML-Dokument gespeicherten Daten zugreifen, ohne die Datenstruktur verstehen zu müssen.
Zum Entwickeln von Web-Services in einem Top-down-Entwicklungsansatz aus einer vorhandenen WSDL-Datei (Web Services Description Language) verwenden Sie das Tool wsimport, um die Artefakte für Ihre JAX-WS-Anwendungen zu generieren. Nachdem Sie die Java-Artefakte für Ihre Anwendung generiert haben, können Sie mit dem Befehlszeilentool xjc des JAXB-Schemacompilers vollständig annotierte Java-Klassen aus einer XML-Schemadatei generieren. Die generierten annotierten Java-Klassen enthalten alle erforderlichen Informationen, die die JAXB-Laufzeitumgebung benötigt, um die XML für das Marshaling und Unmarshaling syntaktisch zu analysieren. Sie können die generierten JAXB-Klassen in JAX-WS-Anwendungen (Java API for XML Web Services) oder anderen Java-Anwendungen für die Verarbeitung von XML-Daten verwenden.


Sie können das JAXB-Tool xjc nicht nur über die Befehlszeile aufrufen, sondern auch in Ant-Build-Umgebungen. Verwenden Sie die Ant-Task com.sun.tools.xjc.XJCTask in der Ant-Build-Umgebung, um das Schemacompilertool xjc aufzurufen. Damit diese Ant-Task richtig ausgeführt wird, müssen Sie Ant mit dem Script "ws_ant" aufrufen.

Vorgehensweise
- Verwenden Sie den JAXB-Schemacompiler, den Befehl xjc, um annotierte JAXB-Java-Klassen zu generieren. Sie finden den Schemacompiler im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\. Der Schemacompiler erzeugt einen Satz mit Paketen, die je nach den für die Kompilierung verwendeten Bindungsoptionen Java-Quellendateien und JAXB-Eigenschaftendateien enthalten.
- (Optional) Verwenden Sie angepasste Bindungsdeklarationen, um die JAXB-Standardzuordnungen zu ändern. Definieren Sie die Bindungsdeklarationen in einer XML-Schemadatei oder in einer separaten Bindungsdatei. Sie können die angepassten Bindungsdateien über die Option -b mit dem Befehl xjc übergeben.
- Kompilieren Sie die generierten JAXB-Objekte. Fügen Sie zum Kompilieren der generierten Artefakte den Thin Client for JAX-WS with WebSphere Application Server dem Klassenpfad hinzu.
Ergebnisse
Beispiel
- Kopieren Sie die folgende Schemadatei bookSchema.xsd in ein temporäres Verzeichnis:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="CatalogData"> <xsd:complexType> <xsd:sequence> <xsd:element name="books" type="bookdata" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="bookdata"> <xsd:sequence> <xsd:element name="author" type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="genre" type="xsd:string"/> <xsd:element name="price" type="xsd:float"/> <xsd:element name="publish_date" type="xsd:dateTime"/> <xsd:element name="description" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:string"/> </xsd:complexType> </xsd:schema>
- Öffnen Sie eine Eingabeaufforderung.
- Führen Sie den JAXB-Schemacompiler, den Befehl xjc, in dem Verzeichnis aus, in dem sich die Schemadatei befindet.
Das Schemacompiliertool xjc befindet sich im Verzeichnis
Stammverzeichnis_des_Anwendungsservers\bin\.
Stammverzeichnis_des_Anwendungsservers\bin\xjc.bat bookSchema.xsd
Stammverzeichnis_des_Anwendungsservers/bin/xjc.sh bookSchema.xsd
Wenn Sie den Befehl xjc ausführen, werden die folgenden JAXB-Java-Dateien generiert:generated\Bookdata.java generated\CatalogdData.java generated\ObjectFactory.java
- Verwenden Sie die generierten JAXB-Objekte in einer Java-Anwendung, um den XML-Inhalt mit den generierten JAXB-Klassen zu ändern.
Weitere Informationen zum Befehl xjc finden Sie in der Dokumentation zur Referenzimplementierung von JAXB.