- JAXB
-
JAXB steht für Java Architecture for XML Binding.
Es bezeichnet 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.
Somit ist ein Arbeiten mit XML-Dokumenten möglich, ohne dass der Programmierer direkt Schnittstellen zur Verarbeitung von XML wie SAX oder DOM verwenden muss.
Inhaltsverzeichnis
Objekt-zu-XML-Transformation
Marshalling bedeutet die Generierung eines XML-Dokumentes aus einem Baum von Java-Objekten. 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.
Daten-Bindung
Der Begriff der Bindung innerhalb dieses Konzeptes beschreibt einen Satz von Regeln, die die Abbildung/Repräsentation des XML-Schemas gegenüber den zu generierenden Java-Objekten bestimmt. 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.
JAXB Binding Framework
Das JAXB Binding Framework besteht im Kern aus drei Java-Paketen:
javax.xml.bind
javax.xml.bind.util
javax.xml.bind.helpers
Die letzten beiden Pakete liefern unterstützende Funktionen für das Hauptpaket „
javax.xml.bind
“.Die Klasse „
JAXBContext
“ aus „javax.xml.bind
“ stellt den Eingangspunkt zur Nutzung des Frameworks innerhalb einer eigenen Java-Anwendung dar.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.
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 („
java.io.OutputStream
“ oder „java.io.Writer
“) übergeben.Marshaller m = jc.createMarshaller(); m.marshal(fooObj, System.out);
Weblinks
Wikimedia Foundation.