CSV Converter
Dieser Adapter liest ein CSV-Textdokument (comma separated values) aus dem vorhergehenden Prozess-Schritt ein und gibt für die angegebenen Datensätze ein XML-Dokument in UTF-8-Zeichenkodierung aus, das ggf. die Spaltenbezeichnungen als Elementnamen verwendet.
Zeilen vor Beginn der CSV-Datenzeilen sowie Kommentarzeilen können ausgelassen werden. Sowohl CR (carriage return) als auch CRLF (carriage return line feed) werden als Zeilenumbrüche interpretiert. Mit Operation Iterate
kann der Adapter das Input-Dokument schrittweise durchlaufen und für jede Iteration im X4-Prozess wird ein Ergebnis-Dokument ausgegeben.
Eigenschaften (Properties)
Operation | Bestimmt, welche Operation der Funktions-Adapter durchführt Mögliche Werte:
|
Parameter
Adapter | Hauptklasse des Adapters (nicht verändern!) Mögliche Werte: de.softproject.integration.adapter.csv.CsvAdapter: Hauptklasse (Standard) |
start | Erste Datenzeile, die eingelesen werden soll (die Zählung beginnt bei 0; wenn die CSV-Datei eine Zeile mit Spaltenbezeichnungen enthält, dann wird diese ausgelassen.) Mögliche Werte:
|
count | Anzahl der Datensätze, die eingelesen werden sollen (bei Operation Iterate pro Durchgang) Mögliche Werte:
|
id | Eindeutige ID des CSV Converter Adapter-Bausteins innerhalb des Prozess-Kontextes oder der Prozess-Instanz (wenn Sie mehrere voneinander unabhängig iterierende CSV Converter Adapter in demselben Prozess-Kontext verwenden möchten) Mögliche Werte:
|
columnNamesInFirstRow | Datenfelder der ersten Zeile in der CSV-Textdatei als Spaltenbezeichnungen interpretieren und Datenfeld-Elemente im XML-Dokument entsprechend benennen, falls es sich um gültige XML-Elementnamen handelt Mögliche Werte:
|
normalizeHeaderNames | Gibt an, wie die Kopfzeilen normalisiert werden sollen, falls darin Zeichen enthalten sind, die nicht XML-konform sind, z. B. Leer- oder Sonderzeichen. Mögliche Werte:
|
columnNamesAfterStart | Werte aus der Zeile, die in Parameter Mögliche Werte:
|
delimiter | Das Trennzeichen zwischen den einzelnen Datenfeldern einer Zeile im CSV-Textdokument Mögliche Werte:
|
rowName | Elementname im ausgegebenen XML-Dokument, das jede Datenzeile umschließt Mögliche Werte: XML-Elementname (ohne Namespace) |
excel | Bestimmt, ob das CSV-Textdokument von MS Excel erzeugt wurde (kein Standard-CSV-Format) und dementsprechend konvertiert werden muss Mögliche Werte:
|
useIndexedColumns | Den Datenelementnamen die entsprechende Spaltennummer (beginnend bei 0) hinzufügen, wenn keine Spaltenbezeichnungen verfügbar sind Mögliche Werte:
|
commentStart | Präfix zur Kennzeichnung von Kommentarzeilen; zutreffende Zeilen werden ausgelassen. Mögliche Werte:
|
inputEncoding | Definiert, welche Zeichenkodierung im Adapter-Input verwendet wird. Mögliche Werte:
Als Zeichenkodierung für den Adapter-Output wird immer UTF-8 verwendet. |
Statuswerte
-1 | Fehler bei der Ausführung des Adapters (Details siehe Server-Log) |
0 | Der Adapter gibt keine Daten (mehr) aus. Dieser Status kann bei Operation |
1 | Der Adapter gibt ein Ergebnis aus. Dieser Status kann bei Operation |
Input
Der Adapter erwartet eine beliebige strukturierte CSV-Textdatei (ggf. auch von MS Excel erzeugt) mit einem beliebigen Trennzeichen und optionalen Kommentarzeilen.
Output
Dieser Funktions-Adapter gibt ein UTF-8-kodiertes XML-Dokument mit folgender Struktur aus. Für jede verarbeitete Zeile wird ein Element erzeugt, das ggf. den Namen aus Parameter rowName
enthält:
<Csv>
<!-- Wenn Spaltenbezeichnungen übernommen werden -->
<Elementname rowNo="Zeilennummer im Ausgangsdokument">
<Spaltenbezeichnung>Wert</Spaltenbezeichnung>
<!--...-->
</Elementname>
<!-- Wenn keine Spaltenbezeichnungen verfügbar sind -->
<Elementname rowNo="Zeilennummer im Ausgangsdokument">
<Column>Wert</Column>
<!--...-->
</Elementname>
<!-- Wenn keine Spaltenbezeichnungen verfügbar sind
und Parameter 'useIndexedColumns' aktiviert ist -->
<Elementname rowNo="Zeilennummer im Ausgangsdokument">
<Column_Spaltennummer>Wert</Column_Spaltennummer>
<!--...-->
</Elementname>
</Csv>
Beispiel
Eine CSV-Textdatei mit Kommentaren soll verarbeitet werden, die erst in der zweiten Zeile die Spaltenbeschreibungen enthält, beispielsweise:
**** This line is just a comment and should not be processed. ****
"METADATA","Value 1","Value 2","Value 3","Value 4","Value 5"
"CustomerID","CompanyName","ContactName","ContactTitle","Address","PostalCode"
"ALFKI","Alfreds Futterkiste","Maria Anders","Sales","Obere Str. 57","12209"
**** This line is just a comment and should not be processed. ****
"ANTON","Moreno Taquería","Antonio Moreno","Owner","Mataderos 2312","05023"
Hierzu wird der Adapter-Parameter columnNamesAfterStart
aktiviert und Parameter start
auf 1
gesetzt, weil sowohl Kommentar- als auch Spaltenbeschriftungszeile nicht mitgezählt werden. Mit dem Wert Dataset
für Parameter rowName
wird beispielsweise folgendes XML-Dokument erzeugt:
<Csv>
<Dataset rowNo="2">
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
<ContactTitle>Sales</ContactTitle>
<Address>Obere Str. 57</Address>
<PostalCode>12209</PostalCode>
</Dataset>
<Dataset rowNo="3">
<CustomerID>ANTON</CustomerID>
<CompanyName>Moreno Taquería</CompanyName>
<ContactName>Antonio Moreno</ContactName>
<ContactTitle>Owner</ContactTitle>
<Address>Mataderos 2312</Address>
<PostalCode>05023</PostalCode>
</Dataset>
</Csv>