# XML-Schema mapping



## Fartos (11. Aug 2011)

Hallo zusammen,

ich arbeite gerade an einem Project, wo ich daten zwischen verschiedenen Ressourcen integrieren soll.
Die Integration sollte erstmal nur zwischen 2 Datenbanken. 
Mit Integration ist hier gemeint, werte der Attribute in Tabelle-source in Tabelle-target überschreiben oder auch hinzufügen. 
Um die Integration zu realisieren wollte ich folgendermaßen vorgehen.
Ich extraiierte die XML-Schema der beiden zu integrierendenTabellen und danach mittels mapping (werte abbilden) zwischen die zu integrierenden elemente der XML-Schemata daten überschreiben.

Ist so was überhaupt mittels Java möglich hinzubekommen?
Für jede Hilfe bin ich Euch schon im voraus sehr dankbar

Fartos


----------



## RySa (12. Aug 2011)

Also wenn nur die eine Datenbank um die Werte aus der anderen aktualisiert werden soll, dann kannst du doch einfach die Datenbank nach xml exportieren, und dann mittels einen Parser die Werte der Elemente aus der xml abfragen, in der anderen Datenbank danach suchen, ob es sie gibt, wenn nicht- hinzufügen, wenn ja - aktualisieren.

Ich habe vor einer Woche etwas ähnliches gemacht. Ich hatte eine xml Datei und eine Datenbank. Und musste die xml Datei mit den Werten aus der Datenbank aktualisieren. (also bei Elementen, die es schon gab, den Wert aktualisieren, und wenn es in der Tabelle eine Spalte gab, zu der es kein Element in der XML gab, musste ich es hinzufügen. Das habe ich allerdings mit meinem eigenen Tool gemacht, der aber auf dem SAX-Parser basiert.

Dir würde ich (sofern die Dateien nicht groß werden, also so < 50mb) JDOM empfehlen.


----------



## Noctarius (12. Aug 2011)

Du könntest dir, wenn es um Datenbanken geht, mal Kettle (Open Source ETL designed to bridge the gap between business and IT. | Kettle Project: Pentaho Data Integration) ansehen. Das ist ein Data Integration Tool welches wir hier in der Firma z.B. zur Database Evolution bzw Synchronisation zwieschen DB2 und MySQL Cache Cluster nutzen.


----------



## Fartos (12. Aug 2011)

Zuerst einmal vielen dank für die Antworten.

im rahmen deses Projektes muss ich eigentlich ein Tool selber schaffen, das die Integration durchführt.
Der Projectleiter setzt auch voraus, dass die Integration durch XML-Schema der beiden zu integrierenden Ressourcen(DB, XML-Doc, Excel-Doc,) stattfinden soll.
Ich denke in den meisten bekanten Integrationstools benutzt man XML-Schemata für die Integration Z.B Altova-Mapforce, Stylus...

Mich interessiert aufjedenfall zu wissen, was überhaupt im hintegrund passiert, wenn man ein Element aus Schema-Source auf Schema-Target Element mittels linienverbinden abbilden wil.

Gruß, Fartos


----------



## ThreadPool (12. Aug 2011)

Wenn du mapforce verwendest, kannst du dir z.B. Java-Code für das Mapping generieren lassen. Wir hatten hier mal eine ähnliche Aufgabe welche jedoch über eine XSLT-Transformation gelöst wurde, sprich es gab ein XSLT-Programm welches ein XML-Dokument nach Schema A in ein XML-Dokument nach Schema B überführte welches dann weiterverarbeitet wurde.


----------



## Fartos (12. Aug 2011)

Danke ThredPool für die Antwort.

ich darf leider kein externes Tool in die Arbeit heranziehen. Es muss alles eigenständig geschaffen werden. Ich meine, selber der Java-Code zur Integration schreiben. Also in diesem Zusammenhang habe ich noch fragen.

Die Schritte bis zur erfolgreichen Integration, wie ich mir das ganze vorstelle:

1- XML-Schemata extraiieren aus der zu integrierenden Ressourcen.
2- Elemente der Schemata mappen.
    * Wete Transformieren/ konvertieren.

Den ersten Schritt habe ich schon realisieren können.
Jetzt zum 2-ten Schritt, was brauche ich konkret an techniken( in diesem Fall sollte java benutzt werden) um diese Integration durchzuführen. Ein Parser muss auch dabei sein, um durch die Elemente der Schemata zu iterieren. Während dieser Iteration, wie werden die Werte von Schema-Source auf -Target abgebbildet werden?

Fartos:rtfm:


----------



## RySa (12. Aug 2011)

Also bei oracle kann man die ganze Datenbank in ein xml-file exportieren, und den dann (nach der Verarbeitung oder nicht) in die andere DB wieder importieren.

Also allgemein, musst du ein xml-file aus der 1. Datenbank erstellen. Dann musst du dessen Werte mit den Werten aus der 2. Datenbank mittels Parser (am besten JDOM ? ) vergleichen (über eine Map oder sonst was) und die Werte in der 2. Datenbank (falls verschieden) um die Werte aus der XML aktualisieren, bzw. neue Werte aus der xml in die 2. Datenbank hinzufügen.

Ich weiß jetzt nicht, was du konkret als Antwort erwartest...


----------

