Wie kann ich eine CSV-Datei in XML konvertieren?
Gibt es eine Software für Ubuntu?
Wie kann ich eine CSV-Datei in XML konvertieren?
Gibt es eine Software für Ubuntu?
Antworten:
Auf der Community-Website zum Konvertieren befindet sich ein Link zu einem Befehlszeilentool namens csv2xml . Da es nicht gewartet wird, möchten Sie möglicherweise eine andere Option auswählen.
Es wird auch ein Java-Tool namens csv2xml (Warnung: Website ist auf Deutsch) und ein Befehlszeilen-Tool namens ff-extractor erwähnt .
Der Link enthält auch Verweise auf Python, Perl, PHP, XSLT. Dies bedeutet jedoch, dass Sie den Konverter selbst codieren müssen.
Wenn Sie das Format der csv
Datei und die Struktur kennen, die Sie in der xml
Datei benötigen , ist es ziemlich einfach, ein Skript zu erstellen, das die Konvertierung handhaben kann.
Nimm die Datei simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Sie können die folgende xml
Datei erstellen :
<?xml version="1.0"?>
<Customers>
<Customer>
<Name>Jack</Name>
<Age>35</Age>
<Country>United States</Country>
</Customer>
<Customer>
<Name>Jill</Name>
<Age>22</Age>
<Country>United Kingdom</Country>
</Customer>
</Customers>
Mit folgendem Skript:
#!/bin/bash
file_in="simple.csv"
file_out="simple.xml"
echo '<?xml version="1.0"?>' > $file_out
echo '<Customers>' >> $file_out
while IFS=$',' read -r -a arry
do
echo ' <Customer>' >> $file_out
echo ' <Name>'${arry[0]}'</Name>' >> $file_out
echo ' <Age>'${arry[1]}'</Age>' >> $file_out
echo ' <Country>'${arry[2]}'</Country>' >> $file_out
echo ' </Customer>' >> $file_out
done < $file_in
echo '</Customers>' >> $file_out
Selbst wenn Sie noch nie zuvor codiert haben, sollte dies meiner Meinung nach einfach zu verwenden und zu ändern sein. Die Datei wird zeilenweise in der while
Schleife gelesen .
IFS
ist der interne Feldspezifizierer. Das IFS=$','
erklärt, dass der Wert des Feldtrennzeichens ein Komma ist. Dies ist Standard für eine CSV-Datei, kann jedoch nach Bedarf geändert werden, um dem Format der Eingabedatei zu entsprechen.
Das -r
Argument für den read
Befehl weist ihn an, Backslashes in Ihrer Datei als Teil Ihrer Daten und nicht als Escapezeichen für ein folgendes Sonderzeichen zu behandeln.
Das -a arry
Argument platziert jede Spalte Ihrer Datei in einem Array (mit dem Namen arry
). Die Spalten in diesem Beispiel sind Name, Alter, Land. Mit anderen Worten die Werte zwischen den Kommas. Jede Spalte in der Zeile wird also in einem Array gespeichert.
Dann wird der benötigte Text für xml
nur um die Werte gewickelt und die xml
Zeile an die Ausgabedatei mit angehängt echo
.
while IFS=$',' read -r -a arry
, ist sie für eine andere nützlich. Vielen Dank.
"Somename, Jack"
anstelle von Jack
in der Eingabedatei?
Eine ziemlich benutzerfreundliche (dh für Leute wie mich einfach) Lösung für die Herausforderung der Konvertierung von CSV in XML besteht darin, einen netten plattformübergreifenden XML-Editor zu verwenden, in den diese Funktion integriert ist. (Ich habe es sowohl unter Ubuntu als auch unter Mac OSX 10.10.5 verwendet; es hat auch eine ausführbare Windows-Datei.)
Wie bereits erwähnt, handelt es sich um einen XML-Editor, der jedoch im Hauptmenü den Import von CSV-zu-XML (und Excel-zu-XML) enthält:
Es konvertierte eine 31-MB-CSV-Datei für mich (ein Speicherauszug aus einer Bibliotheksdatenbank mit 20.000 Einträgen) in ungefähr 15 Sekunden und gab mir eine wohlgeformte XML-Datei zum Speichern und Bearbeiten.
Als Redakteur hat es viele andere willkommene Funktionen (siehe Link oben). Ich kann keine Lizenz dafür erwähnen, aber diese ist in der "README" enthalten:
XMLSpear ist eine kostenlose Software für den persönlichen Gebrauch.
Bitte senden Sie Ihr Feedback an xmlspear@donkeydevelopment.com oder im Forumhttp://donkeydevelopment.com/forums
.Die kommerzielle Nutzung muss von Donkeydevelopment genehmigt werden.
Senden Sie einfach eine E-Mail an xmlspear@donkeydevelopment.com mit dem Betreff "Lizenzanfrage".
Die Readme-Datei enthält auch hilfreiche Informationen zum Inhalt einer .desktop-Datei.
Macht den Job gut für mich unter Ubuntu 18.04 LTS (Gnome).
Ich bin ein großer Fan BaseX
davon scheint eine Importfähigkeit zu haben:
http://docs.basex.org/wiki/CSV_Module
Könnte darauf hinweisen, dass es anscheinend einfacher ist, eine Webanwendung zu verwenden:
https://webapps.stackexchange.com/q/123959/24327
Dies entspricht einem Plugin oder einer Erweiterung des Browsers, der mit Google Sheets funktioniert.
Ich fühle deinen Schmerz, weil es ein scheinbar einfaches Dienstprogramm ist, das über apt verfügbar sein sollte.
Ich würde vorschlagen, dass Sie oder jemand Codes in Python schreiben. Python ist leicht zu erlernen und löst Ihr Problem leicht. Es verfügt sowohl über CSV-Module als auch über XML-Module . Mein Vorschlag berücksichtigt, dass Sie möglicherweise Ihre eigenen Namen für XML-Elemente oder andere komplexe Anforderungen benötigen (z. B. die Konvertierung der letzten CSV-Spalte in das Attribut der vorletzten Spalte).
Es gibt unzählige Online-Tutorials zu Python.