Konvertieren Sie CSV-Datei zu XML
Brauche ich zum Konvertieren einer CSV in ein XML-Dokument. Die Beispiele, die ich bisher gesehen haben, die alle zeigen, wie dies zu tun mit einer festen Anzahl von Spalten in der CSV-Datei.
Habe ich diese bisher mit LINQ:
String[] File = File.ReadAllLines(@"C:\text.csv");
String xml = "";
XElement top = new XElement("TopElement",
from items in File
let fields = items.Split(';')
select new XElement("Item",
new XElement("Column1", fields[0]),
new XElement("Column2", fields[1]),
new XElement("Column3", fields[2]),
new XElement("Column4", fields[3]),
new XElement("Column5", fields[4])
)
);
File.WriteAllText(@"C:\xmlout.xml", xml + top.ToString());
Dies ist für eine Feste Anzahl von Spalten, aber meine .CSV hat eine unterschiedliche Anzahl von Spalten in jeder Zeile.
Wie würden Sie passen, eine Art von Schleife in diese, je nachdem, wie viele Wörter (Spalten) gibt es in jeder Zeile der .CSV?
Thnx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eingang:
Ausgabe:
"A;B"
als einzelnes element<Column0 D =d />
statt<Column0>D</Column0>
. Würde wirklich zu schätzen Ihre Hilfe. Versucht, um zu schauen und dies scheint die beste Lösung, aber brauchen, um herauszufinden, wie man es sich von selbst schließen.In Fall, dass Sie wollen, verwenden Sie die Kopfzeilen, wie die Elemente-Namen:
Schrieb ich eine Klasse, die sich von Vlax-Auszug.
Zusätzlich habe ich ein unit-test für Dokument-workflow.
Unit-Test:
CSV zu XML:
HINWEIS:
Erweiterte ich Vlax-Lösung durch entfernen einer nachgestellten Komma für jede CSV-Zeile Einträge, die verursacht eine exception zur Laufzeit, basierend auf einem index out of bounds in Bezug auf die Spaltenüberschrift.
Cinchoo ETL - ein open-source-Bibliothek zur Verfügung, um die Konvertierung von CSV zu Xml leicht mit wenigen Zeilen code
Für eine Beispiel-CSV:
Xml-Ausgabe:
Kasse CodeProject-Artikel für zusätzliche Hilfe.
Disclaimer: ich bin der Autor dieser Bibliothek.