Beispiel: Serialisieren in einen String (XML auf Datenbank)

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Erstellen von Mappings > Parsen und Serialisieren von Strings >

Beispiel: Serialisieren in einen String (XML auf Datenbank)

In diesem Beispiel wird Schritt für Schritt beschrieben, wie Sie ein Mapping-Design zum Serialisieren von Daten in einen String erstellen. Sie finden die Beispieldatei dazu unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\SerializeToString.mfd.

 

Angenommen, Sie haben eine XML-Datei (und das dazugehörige Schema), die aus mehreren <Person> Elementen besteht. In jedem <Person> Element sind der Vor- und Nachname, die Berufsbezeichnung, Telefondurchwahl und E-Mail-Adresse einer Person wie folgt beschrieben:

 

<Person>
    <First>Joe</First>
    <Last>Firstbread</Last>
    <Title>Marketing Manager Europe</Title>
    <PhoneExt>621</PhoneExt>
    <Email>j.firstbread@nanonull.com</Email>

</Person>

 

Ihr Ziel ist es, die einzelnen <Person> Elemente aus der XML-Datei zu extrahieren und diese (einschließlich der XML-Tags) als neue Datenbankdatensätze in die Tabelle PEOPLE einer SQLite-Datenbank einzufügen. Die Tabelle PEOPLE enthält nur zwei Spalten: ID und PERSON. Ihre vollständige Definition lautet:

 

CREATE TABLE PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, PERSON TEXT);

 

Nach Ausführung des Mappings sollte die Tabelle PEOPLE genauso viele Zeilen, wie die XML-Datei <Person>-Elemente enthält, haben.

 

Gehen Sie dazu folgendermaßen vor:

 

1.Fügen Sie die XML-Quellkomponente zum Mapping-Bereich hinzu (Menübefehl Einfügen | XML-Schema/Datei). Sie finden die Beispieldatei unter: <Dokumente>\Altova\MapForce2019\MapForceExamples\MFCompany.xml.
2.Duplizieren Sie die XML-Komponente (mittels Kopieren/Einfügen).
3.Klicken Sie in der duplizierten XML-Komponente auf btn_file_string, und wählen Sie anschließend den Befehl XML in Strings serialisieren.

mf_serialize_01

4.Klicken Sie mit der rechten Maustaste auf die duplizierte Komponente und wählen Sie im Kontextmenü den Befehl Root-Element ändern. Ändern Sie nun das Root-Element in <Person>.

mf_serialize_02

 

 

Im Allgemeinen können Sie das Root-Element in jedes Element ändern, das im XML-Schema eine globale (und nicht lokale) Deklaration hat. Elemente, die in Ihrem Schema nicht global definiert sind, werden im Dialogfeld "Root-Element auswählen" nicht aufgelistet.


 

5.Doppelklicken Sie auf die Komponente und deaktivieren Sie das Kontrollkästchen XML-Deklaration schreiben, um zu verhindern, dass die XML-Deklaration für jedes <Person>-Element geschrieben wird.

mf_serialize_03

6.Fügen Sie die SQLite-Datenbankkomponente aus dem Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\\dbserialize.db zum Mapping-Bereich hinzu. (Verwenden Sie zum Hinzufügen der Datenbankkomponente den Menübefehl Einfügen | Datenbank, siehe auch Herstellen einer Verbindung zu einer Datenbank). Wenn Sie aufgefordert werden, ein Datenbankobjekt einzufügen, wählen Sie die Tabelle PEOPLE aus.

mf_serialize_04

7.Verbinden Sie die Komponenten, wie unten gezeigt, miteinander. Auf der linken Seite des Mappings wird das Element <Person> auf die Serialisierungskomponente gemappt. Auf der rechten Seite des Mappings wird der serialisierte String-Wert in die Spalte PERSON der Datenbanktabelle PEOPLE eingefügt. Schließlich erstellt MapForce aufgrund der Verbindungslinie zwischen <Person> und der Tabelle PEOPLE für jedes <Person>-Element einen neuen Datensatz.

mf_serialize_05

8.Klicken Sie auf die A:In-Schaltfläche der Datenbankkomponente und gehen Sie folgendermaßen vor:
a.Aktivieren Sie die Option Alle Datensätze löschen. Dadurch werden alle vorhandenen Datensätze zur Mapping-Laufzeit aus der Datenbank gelöscht, bevor neue eingefügt werden.
b.Aktivieren Sie die Option DB-generiert neben der Spalte ID. Damit wird sichergestellt, dass die ID des Datensatzes von der Datenbank generiert wird. Beachten Sie, dass die Option DB-generiert nur angezeigt wird, wenn die Spalte diese Option unterstützt. Bei Spalten, bei denen es sich nicht um eine ID oder ein automatisch inkrementiertes Feld handelt, steht stattdessen die Option max+1 zur Verfügung. Mit dieser Option wird überprüft, welcher Wert in dieser Spalte der bereits vorhandene Maximalwert ist und es wird die nächste verfügbare um 1 erhöhte Ganzzahl eingefügt.

mf_serialize_06

Sie haben nun ein Mapping-Design erstellt, das Daten in einen String serialisiert. Wenn Sie auf das Register Ausgabe klicken, zeigt die SQL-Abfrage für die Vorschau an, dass für jedes <Person>-Element in der XML-Datei, wie beabsichtigt, ein separater Datensatz in die Datenbank eingefügt wird.


© 2019 Altova GmbH