JAXB Work-Flow - Wie kommen Sie in die Verwendung von JAXB?

8

Die JAXB-Dokumentation ist wie ein Lehrbuch, und ich muss einfach nicht Zeit haben, alles JAXB zu lernen, bevor ich es benutzen muss.

Ich habe eine XSD, wenn ich mit JAXB den Workflow marshalieren und aufheben will?

Ich brauche keine Details nur eine High-Level-Ansicht.

Was ich schon weiß: 1. JAXB kann verwendet werden, um Objekte aufzunehmen und XML-Dokumente daraus zu erstellen und umgekehrt 2. Es verwendet ein mysteriöses Tool namens "XJC", das ich auf seiner Website nicht herunterladen konnte 3. XJC erstellt basierend auf XSD Klassen für Sie

Erstens, wie finde ich XJC? Ich weiß wirklich, dass es auf meinem System installiert ist, nicht sicher, woher ich es bekommen habe.
Zweitens, was auch immer dieses Werkzeug ist und wie es zu meiner Maschine kam, wie kann ich es mit der aktuellsten Version von JAXB laufen lassen? Drittens, wenn ich meine XSD-Änderungen mache, muss ich wirklich das gesamte Java-Objekt neu erstellen, wodurch möglicherweise alle meine Tests ungültig werden. Oder kann ich ein Objekt für XSD-Mappings definieren, so dass ich die Kontrolle über das Mapping habe, nicht irgendeine Standardcodegenerierung?

Ich bin es gewohnt, XML zu verwenden und etwas wie xStream zu verwenden, um es manuell zu entfernen, aber das ist für meine Zwecke keine Option mehr.

    
walnutmon 04.08.2010, 20:39
quelle

2 Antworten

15

Angenommen, Sie haben JDK6;

xjc befindet sich im bin / Ordner Ihres JDK, etwa C: \ Programme (x86) \ Java \ jdk1.6.0_20 \ bin \ xjc.exe

Das JDK wird mit jaxb geliefert, während es möglicherweise neuere Versionen von Ссылка oder anderen verfügbaren Implementierungen gibt, die Sie wahrscheinlich nicht benötigen damit beschäftigt Sie sich an dieser Stelle.

JAXB kann viele Dinge tun, ich bin mir nicht sicher, was genau Sie erreichen wollen. Wenn Sie ein xsd haben, können Sie Java-Klassen daraus generieren, indem Sie z. B.

ausführen %Vor%

Und fügen Sie die generierten Klassen in Ihr Projekt ein (normalerweise würden Sie das als Teil Ihres Build-Prozesses ausführen).

  

Oder kann ich ein Objekt für XSD-Mappings definieren?   damit ich die Kontrolle über das Mapping habe,   nicht irgendeine Standardcodegenerierung?

Die generierten Klassen sind nur Pojos mit einigen Anmerkungen, Sie könnten diese Klassen selbst erstellen und die vollständige Kontrolle über das Mapping über Annotationen haben.

Wie gesagt, jaxb kann eine Menge Dinge tun, hier nur ein paar grundlegende Beispiele: SearchParam / SearchType ist eine Klasse, die von xjc aus einer kleinen benutzerdefinierten .xsd

generiert wird

Serialisiert ein Objekt in eine XML-Datei

%Vor%

Deserialisieren einer XML-Datei

%Vor%

Deserialisieren und Schema-Validierung durchführen

%Vor%

Weitere Informationen

nos 04.08.2010, 21:17
quelle
1

Wahrscheinlich haben Sie bereits XJC installiert. Überprüfen Sie das bin-Verzeichnis Ihrer JDK 6-Installation. Einmal gefunden, wenn Sie nur XJC ausführen, gibt es Ihnen die Befehlszeilenoptionen.

JAXB ist eine Spezifikation, daher gibt es mehrere Implementierungen:

  • Metro (RI), die Releases stimmen eng mit den JDK-Updates überein. Wenn Sie also ein aktuelles JDK haben, sollten Sie gut sein.
  • MOXy JAXB, Teil von EclipseLink hier verfügbar, Ссылка

Wenn Sie Ihr Schema ändern, können Sie Ihr Objektmodell optimieren, insbesondere mit den MOXy-Erweiterungen.

Um anzufangen, siehe: Ссылка

    
Blaise Doughan 04.08.2010 21:16
quelle