Altova MapForce 2024 Enterprise Edition

In diesem Beispiel wird gezeigt, wie Sie Werte von bestimmten Elementen in einer XML-Datei mit Hilfe von Wertezuordnungskomponenten (d.h. mit Hilfe einer vordefinierten Lookup-Tabelle) ersetzen.

 

Sie finden die XML-Datei zu diesem Beispiel unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2024\MapForceExamples\MFCompany.xml. Unter anderem sind darin Informationen über die Angestellten einer Firma und deren Stellenbezeichnungen gespeichert, z.B.:

 

<Person>
  <First>Michelle</First>
  <Last>Butler</Last>
  <Title>Software Engineer</Title>
</Person>
<Person>
  <First>Lui</First>
  <Last>King</Last>
  <Title>Support Engineer</Title>
</Person>

<Person>
  <First>Steve</First>
  <Last>Meier</Last>
  <Title>Office Manager</Title>
</Person>

 

Angenommen, Sie müssen einige der Stellenbezeichnungen in der obigen XML-Datei ersetzen. So soll etwa der Titel "Software Engineer" durch "Code Magician" und der Titel "Support Engineer" durch "Support Magician" ersetzt werden. Alle anderen Stellenbezeichnungen sollen unverändert bleiben.

 

Fügen Sie für diese Aufgabe die XML-Datei durch Klicken auf die Symbolleisten-Schaltfläche XML-Schema/Datei einfügen ic-new-schema oder Auswahl des Menübefehls Einfügen | XML-Schema/Datei zum Mapping hinzu. Kopieren Sie als nächstes die XML-Komponente im Mapping, fügen Sie sie ein und erstellen Sie die Verbindungen wie unten gezeigt. Eventuell müssen Sie zuerst die Symbolleisten-Schaltfläche ic-conn-child Automatische Verbindung von Sub-Einträge aktivieren/deaktivieren deaktivieren, damit nicht benötigte Verbindungen nicht automatisch erstellt werden.

mf_lookup_06

Im bisher erstellten Mapping werden die Person-Elemente einfach in die XML-Zieldatei kopiert, ohne dass an den Elementen First, Last und Title irgendwelche Änderungen vorgenommen werden.

 

Um die benötigten Stellenbezeichnungen zu ersetzen, fügen Sie eine Wertezuordnungskomponente hinzu. Klicken Sie mit der rechten Maustaste auf die Verbindung zwischen den beiden Title-Elementen und wählen Sie im Kontextmenü den Befehl Wertezuordnung einfügen. Konfigurieren Sie die Wertezuordnungseigenschaften, wie unten gezeigt:

mf_lookup_07

Gemäß der obigen Konfiguration wird jede Instanz von "Software Engineer" durch "Code Magician" und jede Instanz von "Support Engineer" durch "Support Magician" ersetzt. Beachten Sie, dass die Andernfalls-Bedingung noch nicht definiert wurde, daher gibt die Wertezuordnung überall dort, wo die Stellenbezeichnug eine andere als "Software Engineer" und "Support Engineer" ist, einen leeren Node zurück. Wenn Sie daher auf das Fenster Ausgabe klicken und eine Vorschau auf das Mapping anzeigen, fehlt bei einigen der Person-Elemente das Element Title, z.B.:

 

<Person>
  <First>Vernon</First>
  <Last>Callaby</Last>
</Person>
<Person>
  <First>Frank</First>
  <Last>Further</Last>
</Person>

<Person>
  <First>Michelle</First>
  <Last>Butler</Last>

  <Title>Code Magician</Title>
</Person>

 

Wie zuvor erwähnt, verursachen fehlende Nodes fehlende Einträge in der generierten Ausgabe, daher wurde im obigen XML-Fragment nur bei Michelle Butler die Stellenbezeichnung (title) ersetzt, da ihre Stellenbezeichnung in der Lookup-Tabelle vorhanden war. Die bisher erstellte Konfiguration muss daher folgendermaßen ergänzt werden:

mf_lookup_09

Mit der obigen Konfiguration geschieht zur Mapping-Laufzeit Folgendes:

 

Jede einzelne Instanz von "Software Engineer" wird durch "Code Magician" ersetzt.

Jede einzelne Instanz von "Support Engineer" wird durch "Support Magician" ersetzt.

Wenn die ursprüngliche Stellenbezeichnung in der Lookup-Tabelle nicht gefunden wird, gibt die Wertezuordnung die Stellenbezeichnung unverändert zurück..

 

Zu Demonstrationszwecken können wir alle anderen Stellenbezeichnungen mit Ausnahme von "Software Engineer" und "Support Engineer", auch in einen benutzerdefinierten Wert, z.B. in "N/A" ändern. Definieren Sie dazu die Eigenschaften, wie unten gezeigt:

mf_lookup_08

Wenn Sie jetzt eine Vorschau auf das Mapping anzeigen, sind alle Stellenbezeichnungen in der Ausgabe vorhanden, doch weisen diejenigen ohne Entsprechung in der Lookup-Tabelle den Wert "N/A" auf, z.B.:

 

<Person>
  <First>Vernon</First>
  <Last>Callaby</Last>
  <Title>N/A</Title>
</Person>
<Person>
  <First>Frank</First>
  <Last>Further</Last>
  <Title>N/A</Title>
</Person>
<Person>
  <First>Michelle</First>
  <Last>Butler</Last>
  <Title>Code Magician</Title>
</Person>

 

Damit ist das Wertezuordnungsbeispiel abgeschlossen. Durch Anwendung der oben gezeigten Logik können Sie das gewünschte Ergebnis nun auch in anderen Mappings erzielen.

© 2017-2023 Altova GmbH