Steuerzeichen simulieren

Hallo,

es wird ein APICall auf eine externe URL gemacht, dass immer mal wieder ein Steuerzeichen beinhaltet und damit dieser und weitere Vorgänge nicht ausgeführt werden.

Die Fehlermeldung ist folgende:

Letzte Meldung: An invalid XML character (Unicode: 0x1f) was found in the CDATA section.

Bisher konnte ich bei Synesty dazu keine Möglichkeit finden, das zu beheben. Was aber auch daran liegt, dass das Steuerzeichen noch am selben Tag entfernt werden muss, damit der nächtliche Vorgang nicht still steht. Dies erfolgte daher immer hektisch über die Quelldaten.

Aus diesem Grund habe ich eine eigene Quelldatei erstellt, indem ein Steuerzeichen hinzugefügt wird und ich die Möglichkeit habe, den Fehler in Ruhe zu beheben.

Meine Datei:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<ARTIKEL>
<FOO>
<![CDATA[Text with control char: \x1F]]>
</FOO>
</ARTIKEL>
</ROOT>

Wenn ich nun den API-Call und DatastoreWrite auf diese Datei mache, erhalte ich die obige Fehlermeldung nicht. Warum?

Beste Grüße

Hallo @Lemm,

deine Datei enthält nur den Text „\x1F“. Die Steuerzeichen sind unsichtbare Zeichen.
Du kannst dir das Steuerzeichen z.B. mit Freemarker erzeugen, indem du dieses Template
in den TextHTMLWriter Step kopierst:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<ARTIKEL>
<FOO>
<![CDATA[Text with control char: ${"\x1F"}]]>
</FOO>
</ARTIKEL>
</ROOT>

Die Vorschau sollte dann die „Steuerzeichen“ Warnung anzeigen. Das Zeichen ist aber nicht sichtbar:

Du kannst dir diesen Output in die Zwischenablage kopieren und in deine Datei einfügen oder du verwendest direkt den StringToFile Step um eine Datei aus dem TextHTMLWriter Step zu erzeugen.

Wenn du danach einen XMLReader Step hinzufügst, der die Datei verarbeitet, erhältst du den Fehler.

VG Torsten

Der erste Punkt funktioniert bei mir schon nicht wirklich.

Bei beiden steht das Steuerzeichen noch dabei.

Wenn ich Flow ausführe, erhalte ich ein „erfolgreich“.

Hallo @Lemm,

Im „template“ wird das Zeichen nicht erzeugt. Erst wenn du dir die „Step-Vorschau“ anzeigen lässt, wird das template gerendert und das Zeichen ausgegeben:

Klick auf „Step-Vorschau“

Im Editor der Step Vorschau ist es vorhanden:

Hast du einen XMLReader, der die erzeugte Datei mit dem Steuerzeichen liest?
Hier mal mein Test-Flow:
FlowExport-1-Click-Flows-SteuerzeichenXMLReader.json (5,1 KB)

Den kannst du dir gerne zum Testen importieren.

VG Torsten

1 „Gefällt mir“

Blöder Fehler von mir. Ich habe einen „CSVReader“, statt „XMLReader“ genommen. Habe ich nicht richtig aufgepasst. Logisch, dass es dann bei mir nicht funktioniert. Sorry.

Hat auf jeden Fall geholfen. Ich habe mir die Datei via FTP-Upload dann auf meinen Server gelegt und erhalte nun über „APICall“ den gewollten Fehler.

Danke! :+1:

1 „Gefällt mir“

Der Vollständigkeit halber möchte ich noch erwähnen, dass sich der Steuerzeichenfehler durch folgende „Steps“ beheben lässt:

  1. UrlDownload
  2. FileFindAndReplace (im Feld „regularExpression“ habe ich „\x1F“ eingetragen und in „replacement“ leer gelassen)
  3. XMLReader
  4. DatastoreWriter

Über den Step „APICall“ hatte ich keine Chance oder konnte keine Lösung gefunden werden.

@synesty-Torsten

Doch nochmal eine kurze Frage, zu meinem Punkt 2. Kann man bei „regularExpression“ auch alle Steuerzeichen einbinden?
Bisher hatten wir nur mit einem Steuerzeichen ein Problem und dafür ist das auch ausreichend.

@Lemm

Du kannst mehrere Steuerzeichen durch | getrennt angeben, z.B.:

\u0000|\u0001|\u0002|\u0003|\u0004|\u0005|\u0006|\u0007|\u0008|\u0009|\u000B|\u000C|\u000E|\u000F|\u0010|\u0011|\u0012|\u0013|\u0014|\u0015|\u0016|\u0017|\u0018|\u0019|\u001A|\u001B|\u001C|\u001D|\u001E|\u001F

siehe auch Spreadsheet: Wie kann ich Steuerzeichen aus Spalten entfernen?

Damit solltest du einen Großteil der möglichen Steuerzeichen abdecken.

1 „Gefällt mir“