Jakarta XML Binding
Jakarta XML Binding (JAXB; früher Java Architecture for XML Binding) ist eine Programmschnittstelle in Java, die es ermöglicht, Daten aus einer XML-Schema-Instanz heraus automatisch an Java-Klassen zu binden, und diese Java-Klassen aus einem XML-Schema heraus zu generieren. Diesen Vorgang nennt man XML-Datenbindung. Somit ist ein Arbeiten mit XML-Dokumenten möglich, ohne dass der Entwickler direkt Schnittstellen zur Verarbeitung von XML wie SAX oder DOM verwenden muss. JAXB 2.0 ist Teil der Java Platform, Enterprise Edition 5.0 und der Standard Edition 6.0. Es ist ein Teil der Web Services Interoperability Technology (WSIT). JAXB 1.0 wurde vom Java Community Process als JSR 31 entwickelt, JAXB 2.0 als JSR 222. Die Referenzimplementierung von JAXB ist Teil des Metro-Projektes der GlassFish-Community.[2] Seit Version 9 ist JAXB nicht mehr Bestandteil der JRE und des JDK.[3][4] Objekt-zu-XML-TransformationMarshalling generiert bei JAXB aus einem Baum von Java-Objekten ein XML-Dokument. Dies ist eine spezielle Form der Serialisierung. Anwendungsfälle für diese Umwandlung sind beispielsweise Persistierung in einer Datei oder Übertragung über ein Netzwerk. Der umgekehrte Weg heißt Unmarshalling – eine spezielle Form der Deserialisierung. Hierbei wird aus einem gegebenen XML-Dokument wieder ein Baum von Java-Objekten generiert. Um eine solche Umwandlung eindeutig zu realisieren, verwendet man XML-Schemata. Die verwendeten XML-Dokumente gehorchen den im Schema definierten Regeln. Man nennt sie auch Schema-Instanzen. DatenbindungDer Begriff der Datenbindung innerhalb dieses Konzeptes beschreibt einen Satz von Regeln, welche die Abbildung/Repräsentation des XML-Schemas gegenüber den zu generierenden Java-Objekten bestimmen. Auf diese vorgegebenen Regeln kann durch Binding Customizations Einfluss genommen werden. Dies kann durch Inline-Notizen im XML-Schema oder durch eine gesonderte Datei geschehen, die dann dem Binding Compiler mit übergeben wird. Dieser hat dann die Aufgabe, das XML-Schema auf eine entsprechende Java-Objekt-Struktur abzubilden. Die Tabelle unten listet die Abbildung der XML-Schema-Datentypen (XSD) zu den entsprechenden Datentypen in Java in JAXB auf.[5]
JAXB Binding FrameworkDas JAXB Binding Framework besteht im Kern aus drei Java-Paketen:
Die letzten beiden Pakete liefern unterstützende Funktionen für das Hauptpaket Die Klasse JAXBContext jc = JAXBContext.newInstance("com.acme.foo:com.acme.bar");
Unmarshaller u = jc.createUnmarshaller();
FooObject fooObj = (FooObject) u.unmarshal(new File("foo.xml"));
BarObject barObj = (BarObject) u.unmarshal(new File("bar.xml"));
Aus dem erstellten Kontext-Objekt wird nun ein „Unmarshaller“ generiert. Mit diesem können dann die XML-Daten auf Java-Objekte abgebildet werden. Seit JAXB 2.1 stellt die Hilfsklasse FooObject fooObj = JAXB.unmarshal(new File("foo.xml"), FooObject.class);
BarObject barObj = JAXB.unmarshal(new File("bar.xml"), BarObject.class);
Um die Datenobjekte wieder zurück in die XML-Form zu bringen, wird ein „Marshaller“ aus dem Kontext-Objekt erzeugt. Ihm werden das Datenobjekt und ein Streamobjekt ( Marshaller m = jc.createMarshaller();
m.marshal(fooObj, System.out);
Auch an dieser Stelle erleichtert JAXB 2.1 die Programmierung durch die Hilfsklasse JAXB.marshal(fooObj, System.out);
AlternativenDie folgenden Java XML Binding Frameworks können als Alternative zu JAXB verwendet werden:
Weblinks
Einzelnachweise
|
Portal di Ensiklopedia Dunia