Verwenden Sie die Laufzeitumgebung von Java Architecture for XML Binding (JAXB), um
XML-Instanzdokumente zu bearbeiten.
Vorbereitende Schritte
Verwenden Sie JAXB, um mit dem Schemacompiler, dem Befehl
xjc,
Java-Klassen
aus einem XML-Schema zu generieren,
oder um mit dem Schemagenerator, dem Befehl
schemagen, ein XML-Schema
aus einer Java-Klasse zu generieren.
Informationen zu diesem Vorgang
Verwenden Sie die JAXB-APIs und -Tools, um Zuordnungen zwischen einem XML-Schema und Java™-Klassen zu erstellen.
Wenn die Datenbindungen vorhanden sind, verwenden Sie die JAXB-Laufzeit-API für Bindungen, um
XML-Instanzdokumente in Java-Objekte zu konvertieren und umgekehrt. Der Zugriff auf die in einem XML-Dokument gespeicherten Daten ist
ohne Verständnis der Datenstruktur möglich.
Annotierte JAXB-Klassen und -Artefakte enthalten alle Informationen,
die die JAXB-Laufzeit-API benötigt, um XML-Instanzdokumente zu verarbeiten. Die JAXB-Laufzeit-API
unterstützt das Marshaling von JAXB-Objekten in XML und das Unmarshaling des Dokuments zurück in JAXB-Klasseninstanzen.
Vorgehensweise
- Führen Sie das Marshaling von JAXB-Objekten in XML-Instanzdokumente aus.
Verwenden Sie zum Marshaling oder Konvertieren von JAXB-Objektinstanzen in ein XML-Instanzdokument
die JAXB-Laufzeit-API.
- Instanziieren Sie Ihre JAXB-Klassen.
- Rufen Sie den JAXB-Marshaller auf.
Im folgenden Beispiel wird veranschaulicht, wie die generierten JAXB-Objekte in einer Anwendung
instanziiert werden und wie die JAXBContext-Klasse und die JAXB-Laufzeit-Marshaller-APIs verwendet werden, um das
Marshaling der JAXB-Objekte in XML-Instanzen auszuführen.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
// Marshaller erstellen
Marshaller m = jc.createMarshaller();
// Marshaling des Objekts in eine Datei ausführen
m.marshal(myJAXBObject, myOutputStream);
Die JAXB-Referenzimplementierung
führt weitere anbieterspezifische Marshaller-Eigenschaften ein, wie z. B. die Zuordnung von Namespace-Präfixen, Einrückung und Steuerung von
Escapezeichen, die nicht in der JAXB-Spezifikation definiert sind. Verwenden Sie diese Eigenschaften, um weitere Steuerelemente für den Marshaling-Prozess anzugeben.
Diese Eigenschaften funktionieren nur in der JAXB-Referenzimplementierung und möglicherweise nicht mit anderen JAXB-Providern.
Weitere Informationen zu den anbieterspezifischen Eigenschaften finden Sie in der Spezifikation
"Java Architecture for XML Binding JAXB RI Vendor
Extensions Runtime Properties".
- Führen Sie das Unmarshaling der XML-Datei in JAXB-Objekte aus.
Verwenden Sie zum Unmarshaling oder Konvertieren eines XML-Instanzdokuments in JAXB-Objektinstanzen
die JAXB-Laufzeit-API.
- Rufen Sie ein vorhandenes XML-Instanzdokument ab.
- Rufen Sie den JAXB-Unmarshaller auf.
Im folgenden Beispiel wird ein Programm gezeigt, das ein XML-Dokument liest und das
Unmarshaling bzw. die Konvertierung des XML-Dokuments in JAXB-Objektinstanzen ausführt. Verwenden Sie die
JAXBContext-Klasse und die JAXB-Laufzeit-Unmarshaller-APIs, um das Unmarshaling des XML-Dokuments auszuführen.
JAXBContext jc = JAXBContext.newInstance("myPackageName");
// Unmarshaller erstellen
Unmarshaller um = jc.createUnmarshaller();
//Unmarshaling des XML-Inhalts der Datei myDoc.xml in der Java-Objektinstanz durchführen
MyJAXBObject myJAXBObject = (MyJAXBObject)
um.unmarshal(new java.io.FileInputStream( "myDoc.xml" ));
Ergebnisse
Jetzt können Sie das Marshaling von JAXB-Java-Klassen und das Unmarshaling von XML-Daten mit dem
JAXB-Bindungsframework ausführen.
Weitere Informationen zu den Laufzeit-APIs für das Marshaling und Unmarshaling finden Sie in der Dokumentation zu einer Referenzimplementierung
von JAXB.
Fehler vermeiden: Wenn die Java-2-Sicherheit aktiviert ist,
schließen Sie die Methodenaufrufe "JAXBContext.newInstance()",
"Unmarshaller.unmarshal()" und "Marshaller.marshal()" in eine Methode "AccessController.doPrivileged"
ein, um eine Sicherheitsausnahme zu vermeiden.
gotcha
.