Beispiel: Ausnahme, wenn Node nicht vorhanden ist

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

Startseite >  Erstellen von Mappings > Hinzufügen von Ausnahmeereignissen >

Beispiel: Ausnahme, wenn Node nicht vorhanden ist

In diesem Beispiel wird gezeigt, wie eine Ausnahme ausgelöst wird, wenn ein Node im XML-Quellschema nicht vorhanden ist. Aus Gründen der Einfachheit wird in diesem Beispiel dasselbe XML-Schema sowohl als Quell- als auch Zielkomponente verwendet.

 

So fügen Sie das Quellschema zum Mapping hinzu:

1.Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zum Schema <Dokumente>\Altova\MapForce2019\MapForceExamples\BookList.xsd.
2.Wenn Sie aufgefordert werden, eine Instanzdatei anzugeben, klicken Sie auf Überspringen.
3.Wenn Sie aufgefordert werden, ein Schema-Root-Element auszuwählen, wählen Sie BookList als Root-Element aus.

 

Gehen Sie auf die gleiche Weise vor, um das Zielschema hinzuzufügen. Fügen Sie anschließend mit den entsprechenden Befehlen aus dem Menü Einfügen (bzw. über die entsprechenden Symbolleisten-Schaltflächen) die folgenden Komponenten hinzu:

 

eine Filter: Nodes/Zeilen-Komponente (siehe auch Filter und Bedingungen)
eine Konstante mit dem Text "No year defined!"
eine Ausnahme

 

Ziehen Sie schließlich die Funktion exists aus dem Fenster "Bibliotheken" in den Mapping-Bereich und ziehen Sie die Verbindungen, wie unten gezeigt.

mf_exception_example_1

 

Gemäß dem XML-Schema sind alle Attribute des Elements Book mit Ausnahme des Buchtitels optional, d.h. das Attribut "Year" muss in einer gültigen XML-Instanz nicht unbedingt vorhanden sein. Ziel des Mappings ist, eine XML-Instanz, in der das Attribut "Year" für jedes Buch vorhanden ist, erfolgreich zu verarbeiten. In anderen Fällen soll das Mapping eine Ausnahme auslösen.

 

So testen Sie, ob das Mapping erfolgreich ausgeführt werden kann:

1.Doppelklicken Sie auf die Überschrift der Quellkomponente und navigieren Sie neben dem Eintrag XML-Input-Datei zur folgenden Datei: <Dokumente>\Altova\MapForce2019\MapForceExamples\BookList.xml.
2.Klicken Sie auf die Schaltfläche Ausgabe, um das Mapping auszuführen.

 

So testen Sie die Ausnahme:

1.Erstellen Sie im selben Verzeichnis eine Kopie  der Datei BookList.xml mit dem Namen BookListInvalid.xml.
2.Bearbeiten Sie die Datei, indem Sie das Year-Attribut aus einem Element entfernen.
3.Doppelklicken Sie auf die Überschrift der Quellkomponente und navigieren Sie neben dem Eintrag XML-Input-Datei zur Datei BookListInvalid.xml.
4.Klicken Sie auf die Schaltfläche Ausgabe, um das Mapping auszuführen.

 

Sehen wir uns nun die Funktionsweise des Mappings genauer an.

 

Mit der Verbindung A wird sichergestellt, dass für jedes Buch in der Quellinstanz ein Buch in der Zielinstanz erstellt wird. Mit den Verbindungen B, C, D und E wird sichergestellt, dass "Title", "Year", "Price" und "Author" für jedes Buch von der Quelldatei in die Zieldatei kopiert wird.

 

Durch die Verbindung F wird die exists Funktion ausgelöst, um zu überprüfen, ob das Attribut "Year" vorhanden ist. Mit der Verbindung G wird das Ergebnis der Funktion (true oder false) an den Filter übergeben. Wenn das Ergebnis true ist, ist das Attribut "Year" vorhanden und das Buch wird an den Filter und in der Folge über die Verbindung H an die Zielkomponente übergeben.

 

Beachten Sie, dass der Filter nicht direkt mit dem Year-Output der Quellkomponente verbunden wurde. Hätten wir die Verbindung direkt hergestellt, würde der Filter Year nach dem Vorhandensein von Year filtern, was nicht sinnvoll wäre. Die Ausnahme würde dabei nie ausgelöst.

 

 

Die Verbindung I wurde erstellt, weil die Ausnahme entweder mit einem on-false oder on-true-Output eines Filters verbunden werden muss. Die Verbindung K übergibt schließlich den benutzerdefinierten Fehlertext von der Konstanten an die Ausnahmekomponente.


© 2019 Altova GmbH