XML-Datenbindung

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 17. November 2009 um 19:25 Uhr durch Sebastian.Dietrich (Diskussion | Beiträge) (finalisiert). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der Begriff XML Daten-Bindung (engl. "XML data binding") ist ein Begriff der Objektorientierung, welcher für den Prozess der Abbildung bzw. Repräsentation von XML Dokumenten durch Objekte und vice versa steht. Dieser Prozess erlaubt es Programmierern auf XML Daten über Objekte zuzugreifen ohne komplexe Mechanismen wie XPath, DOM oder SAX zu beherrschen.

Die zur Laufzeit einer Applikation stattfindende Abbildung eines Objektes in XML Daten nennt man dabei Marshalling oder Serialisierung. Der umgekehrte Weg, die Abbildung von XML Daten in Objekte nennt man Unmarshalling oder Deserialisierung.

Funktionsweise

XML Daten-Bindung muss zur Abbildung von Objekten auf XML Daten und umgekehrt Attribute der Objekte auf XML Elemente mappen. Dies kann je nach Aufgabenstellung beziehungsweise Unterstützung durch das verwendete XML Bindungs-Framework auf unterschiedliche Art und Weise erfolgen:

XML Schema basierend
Basierend auf einem gegebenen XML Schema werden Klassen generiert, welche dem XML Schema entsprechen. Die zu dem XML Schema passenden XML Dokumente werden zur Laufzeit dann von Instanzen dieser Klassen repräsentiert.
Klassen basierend
Basierend auf gegebenen zu serialisierenden Klassen wird ein dazupassendes XML Schema generiert. Zur Laufzeit werden die Instanzen dieser Klassen in zu dem XML Schema passende XML Dokumente gespeichert.
Mapping basierend
Ein üblicherweise in XML definiertes Mapping beschreibt die Abbildung von XML Elementen auf Attribute. Basierend auf diesem Mapping werden dann zur Laufzeit Objekte in XML Dokumente serialisiert bzw. XML Dokumente in Objekte deserialisiert.

Alle drei Methoden können auf unterschiedliche Art und Weise implementiert werden. So ist es beispielsweise bei einigen Frameworks möglich die benötigten Klassen erst zur Laufzeit zu generieren bzw. durch Bytecode Manipulation sogar ganz ohne eigene Klassen auszukommen.

Probleme

XML Schemas und Klassen lassen sich nicht immer vollständig aufeinander abbilden. Beispielsweise ist es oft schierig die bei beiden möglichen Kommentare aufeinander abzubilden. Darüberhinaus ist es oft problematisch die Reihenfolge der XML Elemente in Klassen abzubilden während Selbst-Referenzen von Objekten in XML schwer abzubilden sind. Somit kann es der Fall sein, dass XML Daten-Bindung nicht die gesamte Information der zu bindenden Elemente berücksichtigt. Moderne XML Daten-Bindungs-Frameworks sind allerdings in der Lage die vollständigen Informationen zu bewahren.

Alternative

Die Alternative zu XML Daten-Bindung ist die manuelle Serialisierung und Deserialisierung von Objekten in XML Dokumente mittels bekannter XML Techniken wie XPath, DOM oder SAX. Der wichtigste Nachteil dieser Alternative ist der Mehraufwand für die dazu notwendige proprietäre Implementierung und die damit verbundenen Folgekosten.

XML Daten-Bindungs-Frameworks

C / C++

  • gSOAP - Open Source XML Daten-Bindungs Compiler für C & C++, unterstützt SOAP, WSDL and XSD.
  • CodeSynthesis XSD - Open Source XML Daten-Bindungs Compiler für C++, SAX- oder Baum-ähnliches Mapping zu C++ Klassen.
  • CodeSynthesis XSD/e - Open Source XML Parser, Serialisierer und Daten Bindungs Generator für C++ auf Mobilen und Embedded Systemen.
  • xmlbeansxx - C++ Bibliothek für XML Daten-Bindung. Ähnlich zu XMLBeans.

Java

  • Java Architecture for XML Binding (JAXB), Java Programmierschnittstelle für XML Daten-Bindung, Teil der JSE und JEE.
  • Castor - Open Source XML Daten-Bindungs Framework
  • Apache XMLBeans - Open Source XML Daten-Bindungs Framework, Zugriff auf XML Dokumente via aus XML Schema generierter Klassen
  • JiBX - Schnelles Open Source XML Daten-Bindungs Framework, Mapping von Klassen auf XML Schemas über Bytecodemanipulation
  • XStream - Open Source XML Daten-Bindungs Framework, Serialisiert auch nach JSON
  • Apache Commons Betwixt - Simples Open Source XML Daten-Bindungs Framework, Serialisiert Objekte in XML ohne vorherige XML Schema definition

.Net

  • System.Xml.Serialization - Teil des .NET Frameworks, enthält auch XML Daten-Bindungs Klassen

Weitere Infos