Probleme mit XML-Port und "

4. Dezember 2013 14:54

Hallo zusammen,

hoffe Ihr könnt mir weiterhelfen.
Ich habe einen XML-Port geschrieben um mir eine CSV-Datei einliest.
Klappt soweit ganz gut nur hab ich das Problem das in der Beschreibung in 2 Datensätzen ein " vorkommt.

Die Ausrufezeichen sind eben auch der FieldDelimiter. Jetzt ist das Problem das er mir den Rest der Beschreibung in das nächste Feld packt.

Wie kann ich das denn umgehen?

Vielen Dank

Viele Grüße

Re: Probleme mit XML-Port und "

4. Dezember 2013 16:19

Eine CSV-Datei in einem Komma-Dezimaltrennzeichen-Land wie Deutschland kann ein Semikolon als Trennzeichen einsetzten und braucht dann keine Feldbegrenzer. Wenn der Erzeuger der Datei dann aufpasst, dass kein Semikolon in einem Textfeld vorkommen kann, gibt es keine Probleme.
In Punkt-Dezimaltrennzeichen-Ländern wird üblicherweise als Trennzeichen ein Komma statt dem Semikolon eingesetzt, und dann kommt es natürlich zu Problemen, wenn die Dezimalfelder aus Kommadezimaltrenner-Ländern verarbeiten müssen. Dafür gibt es die Feldbegrenzer, sonst sind die überflüssig. Man kann die zwar beim Erzeugen maskieren (in CSV werden die dann innerhalb des Feldes verdoppelt) aber das muss man dann hinterher wieder auseinanderpflücken, also jede Zeile komplett einlesen und die Positionen der Felder anhand der Trennzeichen ermitteln und die doppelten wieder umwandeln.

Bei einem , als Trennzeichen kann man so vorgehen:
Als erstes in der Datei prüfen ob ein ; vorhanden ist und durch , ersetzen. Dann in der CSV Datei die drei Zeichen "," durch ein ; ersetzen. In den Properties dann FieldSeparator auf ; sowie FieldStartDelimiter und FieldEndDelimiter auf <None>. Dann kann man die Datei in NAV einlesen.

Re: Probleme mit XML-Port und "

4. Dezember 2013 16:38

Bei uns hat auch immer folgendes gut funktioniert.

FieldSeparator auf ";" setzen (alle 3 Zeichen).
FieldStartDelimiter und FieldEndDelimiter auf <None>

Danach noch automatisch die Anführungsstriche aus dem ersten Feld und letzten Feld entfernen.

mfg,
winfy