Das Kefk Network Wiki befindet sich im Testbetrieb.
JAXB
Aus Kefk.
JAXB steht für Java Architecture for XML Binding.
Es bezeichnet eine Programmschnittstelle in Java, die es ermöglicht, Daten aus einem XML-Schema automatisch an Java-Klassen zu binden; diese sogar aus einer XML-Schema-Instanz heraus zu generieren.
Somit soll ein Arbeiten mit XML-Daten möglich werden, bei welchem der Programmierer nicht mehr auf die XML-Parsing-Technologien SAX und DOM angewiesen ist.
Inhaltsverzeichnis |
Daten-Rangierbahnhof
Man bezeichnet dabei als Unmarshalling den Prozess, Daten aus einer XML-Schema-Instanz heraus automatisch in einen Java-Objekte-Baum zu übertragen. (Daten in ihre ursprüngliche Form bringen: XML zu Datenobjekten)
Marshalling bezeichnet den umgekehrten Weg, wenn aus einem Java-Objekte-Baum wieder XML-Daten geschrieben werden. (Daten wieder in XML für die Aufbewahrung bzw. den Transport speichern.)
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.helper
Wobei die letzten beiden Pakete unterstützende Funktion für das Haupt-Paket „javax.xml.bind“ liefern.
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 wird das Datenobjekt und ein Streamobjekt („java.io.OutputStream“ oder „java.io.Writer“) übergeben.
Marshaller m = jc.createMarshaller(); m.marshal(fooObj, System.out);
