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.

Vorbereitungen

Entwickeln Sie eine XML-Schemadatei, oder verwenden Sie eine vorhandene.

Informationen zu dieser Task

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.

Beste Übung:WebSphere® Application Server bietet Java™ API für XML-basierte Webdienste (JAX-WS) und Java Architecture for XML Binding (JAXB)-Tools. Die Befehlszeilentools wsimport, wsgen, schemagen und xjc befinden sich im Verzeichnis "Stammverzeichnis_des_Anwendungsservers\bin\" des vollständigen Profils. Die Befehle wsimport und wsgen befinden sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers\jaxws\bin\ im Liberty-Profil. Derxjc Undschemagen Befehle befinden sich im Stammverzeichnis_des_Anwendungsservers\jaxb\bin\-Verzeichnis im Liberty-Profil. Ähnliche Tools werden vom Java SE Development Kit (JDK) 6 bereitgestellt. In einigen Fällen werden die Artefakte, die sowohl durch die Werkzeuge von WebSphere Application Server und das JDK unterstützen dieselben Spezifikationsebenen. Im Allgemeinen sind die von den JDK-Tools generierten Artefakte in kompatible Laufzeitumgebungen portierbar. Es empfiehlt sich jedoch, die mit diesem Produkt bereitgestellten Tools zu verwenden, um eine nahtlose Integration in das WebSphere Application Server Umgebung und um die Vorteile der Funktionen zu nutzen, die möglicherweise nur unterstützt werden in WebSphere Application Server. Um den Vorteil der JAX-WS- und JAXB-V2.2-Tools zu nutzen, verwenden Sie die mit Application Server bereitgestellten Tools, die sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\ befinden.
Unterstützte Konfigurationen: Dieses Produkt unterstützt die JAXB 2.2 Spezifikation. JAX-WS 2.2 erfordert JAXB 2.2 für die Datenbindung.

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.

Vermeide Ärger: Wenn Sie diexjc Ant-Task müssen Sie dendestdir Parameter, um das Zielverzeichnis anzugeben, statt destarget Möglichkeit. Die Angabe der Option target mit der Ant-Task xjc löst einen Fehler aus.

Vorgehensweise

  1. Verwenden Sie den JAXB-Schema-Compiler.xjc Befehl zum Generieren von JAXB-annotierten Java-Klassen.
    Der Schema-Compiler befindet sich im Stammverzeichnis_des_Anwendungsservers\bin\-Verzeichnis. Der Schemacompiler erzeugt einen Satz mit Paketen, die je nach den für die Kompilierung verwendeten Bindungsoptionen Java-Quellendateien und JAXB-Eigenschaftendateien enthalten.
  2. (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.
  3. 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

Nachdem Sie nun die JAXB-Objekte generiert haben, können Sie Java-Anwendungen schreiben, die die generierten JAXB-Objekte verwenden, und den XML-Inhalt mit den generierten JAXB-Klassen ändern.

Beispiel

Das folgende Beispiel veranschaulicht, wie Sie mit den JAXB-Tools Java-Klassen aus einer vorhandenen XML-Schemadatei generieren können.
  1. Kopieren Sie die folgende Schemadatei bookSchema.xsd in ein temporäres Verzeichnis:
      <xsd:schema xmlns:xsd="https://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>        
    
  2. Öffnen Sie eine Eingabeaufforderung.
  3. Führen Sie den JAXB-Schemacompiler, den Befehl xjc, in dem Verzeichnis aus, in dem sich die Schemadatei befindet. Derxjc Das Schema-Compiler-Tool befindet sich im Stammverzeichnis_des_Anwendungsservers\bin\-Verzeichnis.
    [Windows]
    app_server_root\bin\xjc.bat bookSchema.xsd
    [Linux][AIX][HP-UX][Solaris]
    app_server_root/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
    
  4. 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.