CSV lesen und in XML umwandeln

So lesen Sie eine CSV-Datei und konvertieren sie in XML.

Ossi Galkin avatarGeschrieben vonOssi Galkin Vor über einer Woche aktualisiertTable of contents

In dieser Anleitung erstellen wir einen Prozess, der eine CSV-Datei liest und in eine XML-Datei konvertiert. Das XML wird dabei auch ein wenig bearbeitet. In diesem Beispiel werden keine eigentlichen Dateien erstellt, sondern der Inhalt jeder Datei wird in Frends als Zeichenfolgen dargestellt.

Die CSV-Daten sind in der Datei oscar_age_male.csv gespeichert. Der Inhalt wird in Frends Tasks kopiert und eingefügt. Die CSV-Datei listet männliche Oscar-Gewinner auf und stammt vonhttps://people.sc.fsu.edu/~jburkardt/data/csv/csv.htmlund sie sind unter der GNU LGPL-Lizenz lizenziert (Version 3, 29. Juni 2007)https://people.sc.fsu.edu/~jburkardt/txt/gnu_lgpl.txt

Die ersten paar Zeilen der CSV-Datei sind:

"Index", "Jahr", "Alter", "Name", "Film"

1, 1928, 44, „Emil Jannings“, „Das letzte Gebot, Der Weg allen Fleisches“

2, 1929, 41, „Warner Baxter“, „Im alten Arizona“

Aufstellen

Importaufgaben:

Freunde.CSV.Parse,

Frends.Regex.Ersetzen

Erstellen eines Prozesses

Erstellen eines Prozesses

Erstellen Sie einen neuen Prozess und geben Sie ihm einen Namen.

Erstellen Sie eine neue Aufgabe, geben Sie ihr einen Namen und hängen Sie sie an den Trigger an. Wählen Sie in der Aufgabenliste CSV-Parsing aus.

Kopieren Sie den Inhalt von oscar_age_male.csv in das CSV-Feld. Der Feldtyp kann auf Text belassen werden, was der Standard ist.

Das Trennzeichen im Feld ist "," ohneZitatMarkierungen („“)

Spaltenangaben können leer gelassen werden.

Unter der Registerkarte „Optionen“ kann alles auf den Standardwerten belassen werden. Es ist wichtig, dass „Enthält Kopfzeile“ auf „true“ gesetzt wurde, da dies der Aufgabe mitteilt, dass die erste Zeile Spaltennamen enthält.

Erstellen Sie als Nächstes zwei Ersetzungsaufgaben:

Die Aufgabe "CSV.Parse" verfügt über ein Ergebnisobjekt ".Xml", das das Ergebnis der CSV-Analyse automatisch in XML konvertieren kann. Diese und viele andere Methoden finden Sie in der AufgabeDokumentation.

Da die Option „Enthält Kopfzeile“ auf „true“ gesetzt wurde, haben die meisten XML-Elemente richtige Namen. Das Stammelement hat jedoch den Namen „Root“ und jede Zeile befindet sich innerhalb eines Zeilenelements. Sie können einfach durch zwei Ersetzungsaufgaben ersetzt werden. Zuerst ersetzen wir „Root“ durch „OscarWinners“ und dann ersetzen wir „Row“ durch „Person“.

Die Frends.Regex.Replace-Aufgabe hat ein Rückgabeobjekt namens ReplacedText, das das resultierende Ausgabeobjekt enthält. Indem wir darauf verweisen, können wir es in der nächsten Ersetzungsaufgabe verwenden.

Das zurückgegebene transformierte XML sieht folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<Oscar-Gewinner>
<Person>
<Index>1</Index>
<Jahr>1928</Jahr>
<Alter>44</Alter>
<Name>Emil Jannings</Name>
<Movie>Das letzte Gebot, Der Weg allen Fleisches</Movie>
</Person>
<Person>
<Index>2</Index>
<Jahr>1929</Jahr>
<Alter>41</Alter>
<Name>Warner Baxter</Name>
<Film>Im alten Arizona</Film>
</Person>
...
</OscarGewinner>

Epilog

Für komplexere XML-Transformationen ist es besser, XSLT zu verwenden, eine Sprache und ein Tool, die für XML-Transformationen entwickelt wurden. Diese und andere XML-bezogene Operationen haben in Frends ihre eigene Aufgabe:Freunde.XSLT.Transform

Erfahren Sie als Nächstes, wie SieErstellen Sie ein JSON-Array und speichern Sie es in einer Variable.


Verwandte ArtikelErstellen einer geplanten FTP-ÜbertragungLesen und Schreiben von DateienKonvertieren Sie CSV in JSONCSV in Flatfile umwandelnJSON-zu-JSON-Mapping mit Handlebars Task