CSV to XML Konverter
Hallo zusammen,
da das mein erster Beitrag ist, hoffe ich ich bin hier richtig mit meiner Fage.
Und zwar wollte ich wissen ob jemand eine Möglichkeit hat/kennt eine .csv in eine .xml umzuwandeln?
Am besten wäre es auf command line basis, da dann eine Konvertierung automatisiert werden kann =)
Für eure Hilfe schon mal vielen Dank :D
da das mein erster Beitrag ist, hoffe ich ich bin hier richtig mit meiner Fage.
Und zwar wollte ich wissen ob jemand eine Möglichkeit hat/kennt eine .csv in eine .xml umzuwandeln?
Am besten wäre es auf command line basis, da dann eine Konvertierung automatisiert werden kann =)
Für eure Hilfe schon mal vielen Dank :D
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 271900
Url: https://administrator.de/contentid/271900
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Tyga911,
wie soll die Unwandlung denn aussehen ? Ein root-Element,dann für jede Zeile ein row Element mit den Spalten als weitere Elemente ?
Da lässt sich was einfaches mit Powershell scripten.
Gruß jodel32
wie soll die Unwandlung denn aussehen ? Ein root-Element,dann für jede Zeile ein row Element mit den Spalten als weitere Elemente ?
Da lässt sich was einfaches mit Powershell scripten.
Gruß jodel32
Hallo tyga911,
um das Beispiel von @114757 aufzugreifen (sorry jodel falls du schon an der Lösung gearbeitet haben solltest):
Folgendes Powershell-Script konvertiert alle CSV-Dateien eines Ordners zu XML-Dateien mit gleich lautendem Pfad und Namen.
Dem Script übergibt man als Parameter den Ordnerpfad in dem die CSV-Dateien liegen und den Delimiter der CSV-Dateien:
Heraus kommt dann z.B. bei folgender Beispiel CSV-Datei ...
... diese XML-Struktur:
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
um das Beispiel von @114757 aufzugreifen (sorry jodel falls du schon an der Lösung gearbeitet haben solltest):
Folgendes Powershell-Script konvertiert alle CSV-Dateien eines Ordners zu XML-Dateien mit gleich lautendem Pfad und Namen.
param(
[string]$folder,
[string]$delimiter = ";"
)
# Alle CSV-Dateien des Ordners durchlaufen
gci $folder -Filter "*.csv" | %{
write-host "Konvertiere '$($_.Fullname)' ..." -ForegroundColor Green
# importiere CSV-Datei als Objekt
$csv = import-csv $_.Fullname -Delimiter $delimiter
# Spaltennamen der CSV-Datei extrahieren
$cols = $csv | gm -MemberType NoteProperty | select -ExpandProperty Name
# erzeuge neues XML-Dokument
$xml = New-Object XML
# XML Grundgerüst laden
$xml.LoadXml('<?xml version="1.0" encoding="utf-8"?><root></root>')
# Root-Knoten referenzieren
$root = $xml.SelectSingleNode("/root")
# für jede Zeile der CSV-Datei ...
foreach($line in $csv){
# erzeuge ein neues Row-Element
$row = $xml.CreateElement("row")
# für jede Spalte der Zeile erstelle ein neues Element mit dem Namen der Spalte und dem Inhalt der aktuellen Zeile
$cols | %{
$col = $xml.CreateElement($_)
$col.InnerText = $line.($_)
$row.AppendChild($col) | out-null
}
# füge das Row-Element im Root-Knoten ein
$root.AppendChild($row) | out-null
}
# Speichere die neue XML-Datei
$xml.Save($_.DirectoryName + "\" + $_.BaseName + ".xml")
}
"C:\convert_script.ps1" "C:\Pfad" ";"
Heraus kommt dann z.B. bei folgender Beispiel CSV-Datei ...
Info1;Info2;Info3;Info4;Info5;Info6;Testzahl
00001;0022;Blau;Bezahlt;EDV;Neu;0000100
000;01123;Schwarz;Ratenzahlung;EDV;Gebraucht;0000200,5
000214485;00055885;Blau;Bezahlt;Hotline;Neu;99,3
000555654;00122458;Silber;Ratenzahlung;Chef;Neu;33,1
<?xml version="1.0" encoding="utf-8"?>
<root>
<row>
<Info1>00001</Info1>
<Info2>0022</Info2>
<Info3>Blau</Info3>
<Info4>Bezahlt</Info4>
<Info5>EDV</Info5>
<Info6>Neu</Info6>
<Testzahl>0000100</Testzahl>
</row>
<row>
<Info1>000</Info1>
<Info2>01123</Info2>
<Info3>Schwarz</Info3>
<Info4>Ratenzahlung</Info4>
<Info5>EDV</Info5>
<Info6>Gebraucht</Info6>
<Testzahl>0000200,5</Testzahl>
</row>
<row>
<Info1>000214485</Info1>
<Info2>00055885</Info2>
<Info3>Blau</Info3>
<Info4>Bezahlt</Info4>
<Info5>Hotline</Info5>
<Info6>Neu</Info6>
<Testzahl>99,3</Testzahl>
</row>
<row>
<Info1>000555654</Info1>
<Info2>00122458</Info2>
<Info3>Silber</Info3>
<Info4>Ratenzahlung</Info4>
<Info5>Chef</Info5>
<Info6>Neu</Info6>
<Testzahl>33,1</Testzahl>
</row>
</root>
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
@colinardo Danke für deine Übernahme
Siehe die Lösung von @colinardo, das sollte passen, hab's mal getestet und funktioniert hier auch sehr schön.
Gruß jodel32
hier ist ein Beispiel wie es in etwa aussehen soll.
@Tyga911 Das ist aber kein valides XML von dir, da fehlen so einige schließende Tags ...Siehe die Lösung von @colinardo, das sollte passen, hab's mal getestet und funktioniert hier auch sehr schön.
Gruß jodel32
Den Beitrag dann bitte noch auf gelöst setzen.