EncodingPatcher

Gruppe

Preparser

Funktion

Kann einzelne Bytes oder ausgewählte Bytefolgen durch andere Bytes, Bytefolgen, oder durch nichts ersetzen.

Konfigurationsdatei

sample_EncodingPatcher_Format_EDI.properties

Beschreibung


Der EncodingPatcher ist in der Lage, die Eingangsdaten byteweise zu lesen und dabei einzelne Bytes, oder ausgewählte Bytefolgen durch andere Bytes, Bytefolgen oder durch nichts zu ersetzen. Der Hauptzweck ist die Reparatur korrupter Encodings und das Entfernen von Steuerzeichen aus den Eingangsdaten, um dann im Profil das fehlerfreie Parsen der Daten zu ermöglichen. Die Anweisungen für die Ersetzung werden aus einer Properties-Datei erwartet. Eine Ersetzungsanweisung ist eine Zeile der Form: 0xHEXA1=0xHEXA2

Beispiel


0xE9=0x20

Dadurch wird jedes Byte E9 durch ein Byte 20 ersetzt.

0x0d0a=

Dadurch wird die Bytefolge 0D0A aus den Eingangsdaten entfernt (durch nichts ersetzt).

0x04=0x0D0A

Dadurch wird das Steuerzeichen 04 durch 0D0A ersetzt (CR-LF).

Die Hexaziffern A bis F können wahlweise klein, oder groß geschrieben werden. Jede Bytefolge muss aus einer geradzahligen Anzahl von Hexaziffern bestehen. Alle Regeln sind in gleicher Hierarchie, unabhängig von ihrer Reihenfolge in der Konfigurationsdatei. Links vom = stehende Bytefolgen werden in der Eingangsdatei gesucht und durch die rechts vom = stehende Bytefolge ersetzt.

Es ist aber möglich, mit dem ChainPreParser mehrere EncodingPatcher hintereinander auszuführen.

Beispiel-Datei


sample_EncodingPatcher_Format_EDI.properties
#! class = com.ebd.hub.datawizard.parser.stream.EncodingPatcher
# Properties File for formatting EDI and TradaComs
# Encoding: only ISO-8859_1 or ASCII. For UTF8 use with care.
# UNA:+.? '\r\n replace nothing
0x554E413A2B2E3F20270D0A = 0x554E413A2B2E3F20270D0A
# UNA:+.? '\n -> UNA:+.? '\r\n
0x554E413A2B2E3F20270A = 0x554E413A2B2E3F20270D0A
# UNA:+.? 'UN -> UNA:+.? '\r\nUN
0x554E413A2B2E3F2027554E = 0x554E413A2B2E3F20270D0A554E
# ?? replace nothing
0x3F3F = 0x3F3F
# ?' replace nothing
0x3F27 = 0x3F27
# '\r\n replace nothing
0x270D0A = 0x270D0A
# '\n -> '\r\n
0x270A = 0x270D0A
# ' -> '\r\n
0x27 = 0x270D0A
# \r\n -> remove it
0x0D0A =
# \n -> remove it
0x0A =