Inhaltsverzeichnis

Search

  1. Vorwort
  2. Einführung in die Datenumwandlung
  3. Datenprozessor-Umwandlung
  4. Assistent für Eingabe- und Ausgabeformate
  5. Relationale Eingabe und Ausgabe
  6. Verwenden des IntelliScript-Editors
  7. XMap
  8. Bibliotheken
  9. Schema-Objekt
  10. Eingabeaufforderung
  11. Skripte
  12. Parser
  13. Skriptports
  14. Dokumentprozessoren
  15. Formate
  16. Datenbehälter
  17. Anker
  18. Transformer
  19. Aktionen
  20. Serializer
  21. Mapper
  22. Lokatoren, Schlüssel und Indexierung
  23. Streamer
  24. Validatoren, Benachrichtigungen und Fehlerbehandlung
  25. Validierungsregeln
  26. Benutzerdefinierte Skriptkomponenten

Benutzerhandbuch

Benutzerhandbuch

XML-Streamer

XML-Streamer

Eine
XmlStreamer
-Komponente teilt große XML-Dokumente in kleinere Teile auf. Der
XmlStreamer
teilt die XML-Quelle in Header-, Footer- und Hauptteilsegmente auf. Die Hauptteilsegmente können wiederholende oder nicht wiederholende Segmente enthalten. Der
XmlStreamer
kann jedes XML-Segment einer entsprechenden Umwandlung übergeben, üblicherweise einem Mapper oder einem Serializer.
Ein
XmlStreamer
funktioniert ungefähr auf dieselbe Weise wie ein
Streamer
, abgesehen von einigen kleinen Unterschieden aufgrund der strukturierten XML-Eingabe. Um Folgenden werden die Hauptfunktionen aufgeführt:
  • Die Hauptteilsegmente werden als XML-Elemente definiert. Sie können den Hauptteil mit mehreren Elementen desselben oder eines anderen Typs in jeder beliebigen Reihenfolge konfigurieren.
  • Der Header wird als gesamter Teil der XML definiert, der dem ersten Hauptteilsegment vorausgeht. Bei der Konfiguration des
    XmlStreamer
    ist es nicht erforderlich, die Elemente zu definieren, die der Header umfasst.
  • Der Footer wird als gesamter Teil der XML definiert, die auf den letzten Hauptteilsegment folgt. Bei der Konfiguration des
    XmlStreamer
    ist es nicht erforderlich, die Elemente zu definieren, die der Footer umfasst.
  • Häufig stellen die Header- und die Footer-Segmente keine wohlgeformte XML dar. Damit die Segmente an einen Mapper oder einen Serializer übergeben werden können, können Sie Modifizierer-Komponenten konfigurieren, die die Segmente in wohlgeformte XML umwandeln.
Betrachten Sie für ein besseres Verständnis dieser Funktionen die folgende XML-Quellstruktur:
<stream> <headerline1>MainHeader</headerline1> <substreams> <substream> <subheaderline1>SubHeader</subheaderline1> <segments> <segment1>Segment1A</segment1> <segment1>Segment1B</segment1> <segment2>Segment2A</segment2> <segment1>Segment1C</segment1> <segment2>Segment2B</segment2> </segments> <subfooterline1>SubFooter</subfooterline1> </substream> <substream>...</substream> <substream>...</substream> </substreams> <footerline1>MainFooter</footerline1> </stream>
In diesem Beispiel können Sie die Hauptteilsegmente als
substream
-Elemente definieren. Der Header besteht aus allem, das dem ersten
substream
vorausgeht:
<stream> <headerline1>MainHeader</headerline1> <substreams>
Der Footer besteht aus allem, das auf den letzten
substream
folgt:
</substreams> <footerline1>MainFooter</footerline1> </stream>
Die Header- und die Footer-Segmente stellen keine wohlgeformte XML dar. Sie können Modifizierer anwenden, die schließende oder öffnende Tags hinzufügen, damit die XML wohlgeformt wird. Beispielsweise kann ein Modifizierer den Header in Folgendes umwandeln:
<stream> <headerline1>MainHeader</headerline1> <substreams> </substreams> </stream>
Sie können den
XmlStreamer
so konfigurieren, dass das Header-Segment, das Footer-Segment und jede Instanz des
substream
-Segments einer entsprechenden Umwandlung übergeben wird, beispielsweise einem Mapper oder einem Serializer.
Die Header-Segmentelemente sind bei der Verarbeitung der Hauptteilelemente verfügbar. Die Footer-Elemente sind bei der Verarbeitung der Hauptteilelemente jedoch noch nicht verfügbar. Footer-Elemente werden nur verarbeitet, nachdem die Hauptteilelemente von der Umwandlung gelesen wurden.
Alternativ können Sie die
substream
-Elemente in die Segmente
segment1
und
segment2
unterteilen und jedes dieser Segmente an einen eigenen Mapper oder Serializer senden. Beachten Sie, dass
segment1
und
segment2
in einer zufälligen Reihenfolge aufeinander folgen. Der
XmlStreamer
ignoriert die Reihenfolge und verarbeitet
segment1
und
segment2
in der beliebigen Reihenfolge ihres Auftretens.
In der folgenden Abbildung wird die für diesen Zweck entsprechende Konfiguration dargestellt. Das Skript definiert unabhängige Serializer für die Header-, Footer-,
segment1
- und
segment2
-Segmente.
global level XmlStreamer1 = XmlStreamer level 2 Header = XmlSegment level 3 run_component = HeaderSerializer level 2 Footer = XmlSegment level 3 run_component = FooterSerializer level 2 sub_elements = level 3 ComplexXmlSegment >> level 4 locator = /stream/*s/substreams/*s/substream level 4 sub_elements = level 5 SimpleXmlSegment >> level 6 locator = /stream/*s/substreams/*s/substream/*s/segments/*s/*s1/segment1 level 6 run_component = Segment1Serializer level 5 SimpleXmlSegment >> level 6 locator = /stream/*s/substreams/*s/substream/*s/segments/*s/*s1/segment2 level 6 run_component = Segment2Serializer level 4 ... level 3 ... global level HeaderSerializer = Serializer() global level FooterSerializer = Serializer() global level Segment1Serializer = Serializer() global level Segment2Serializer = Serializer()
Auch wenn die Footer-Ausführungskomponente in diesem Beispiel vor den Hauptteilelementen angezeigt wird, werden Footer-Elemente erst dann verarbeitet, wenn die Hauptteilelemente von der Umwandlung gelesen wurden.
Für eine weitere Präzisierung können Sie Umwandlungen für die geschachtelten Header und Footer innerhalb der jeweiligen substream-Elemente definieren.