CSV zu XML
Dieser Konverter wandelt CSV-Zeilen in XML-Elemente in Ihrem Browser um: ein <records>-Root-Element, ein <record>-Element pro Zeile, ein Kind-Tag pro Header. Tag-Namen werden zu gültigen XML-Namen bereinigt, Text wird escaped und durch Punkte getrennte Header verschachteln sich in Kind-Elemente. Es wird nichts hochgeladen.
CSV zu XML erklärt
XML ist strenger als CSV bei Namen, und diese Strenge ist das gesamte technische Problem hier. Ein Header wie unit price kann nicht zu einem Tag werden, da Elementnamen keine Leerzeichen enthalten dürfen; 2fa kann nicht zu einem Tag werden, da Namen nicht mit einer Ziffer beginnen dürfen. Dieser Konverter wendet die Standardlösung an – ungültige Zeichen werden zu Unterstrichen, und ein Name, der mit einer Ziffer beginnen würde, erhält einen führenden Unterstrich – sodass jeder Header ein Tag erzeugt, das ein echter XML-Parser akzeptiert, und die Zuordnung von Spalte zu Element bleibt sichtbar statt magisch.
Die CSV-Seite wird gemäß RFC 4180 geparst: ein Zustandsautomat, das doppelte Anführungszeichen, Kommas und Zeilenumbrüche in quoted fields berücksichtigt, Trennzeichen-Erkennung für Komma, Semikolon, Tabulator und Pipe, und die gleiche enge Typ-Richtlinie, die die Seite überall verwendet – Werte werden nur gemäß der JSON-Zahl-Grammatik zu Zahlen, also behält 02134 seine führende Null. Durch Punkte getrennte Header behalten ihre Struktur: address.city wird zu einem address-Element mit einem city-Kind, nicht zu einem flachen Tag mit einem Punkt im Namen.
Alles läuft in diesem Browser-Tab. Die CSV wird von einer im-Page-Engine geparst und das XML wird aus den geparsten Datensätzen aufgebaut; nichts berührt ein Netzwerk – öffnen Sie DevTools, beobachten Sie, wie das Network-Panel schweigt, und der Privatsphäre-Anspruch prüft sich selbst.
Die Prüfung der Rückkonvertierung ist nur ein Kopieren-Einfügen entfernt, weil der XML zu CSV-Konverter dieselben Konventionen umgekehrt liest, Zeilen zurück aus Elementen macht.
Wenn die Wahl des Ausgabeformats noch offen ist, der JSON vs XML Vergleich legt dar, wo Markup seine Berechtigung hat und wo es Overhead ist.
Wie die Konvertierung tatsächlich funktioniert
Die Pipeline ist parse, expand, sanitise, escape – in dieser Reihenfolge, und jede Stufe sieht nur die Ausgabe der vorherigen. Diese Reihenfolge ist der Grund, warum ein Komma in einer quoted-Zelle nie die Elementstruktur stört: das Raster ist festgelegt, bevor es XML gibt, und der XML-Writer trifft nie Entscheidungen über CSV-Syntax.
- Parse: RFC-4180-Regeln mit real-world-Anpassungen – ein Anführungszeichen in der Mitte eines bare fields wird wörtlich genommen, und leere Zeilen am Ende werden verworfen.
- Expand: Header werden als Pfade dekodiert, sodass address.city city in address verschachtelt, und tags[0], tags[1] zu wiederholten Elementen werden.
- Sanitise: Jeder Elementname wird gegen die XML-1.0-Namenregeln geprüft – Buchstaben, Ziffern, Unterstriche, Bindestriche, Punkte und Doppelpunkte – und wo es fehlschlägt, repariert.
- Escape: Textinhalt erhält &, < und > an den Stellen, wo die Quelle &, < oder > hatte, und Attributwerte escapen zusätzlich das doppelte Anführungszeichen.
Die Tag-Namen-Richtlinie, präzise
XML 1.0 erlaubt, dass ein Name mit einem Buchstaben, einem Unterstrich oder einem Doppelpunkt beginnt, und erlaubt, dass er mit Ziffern, Bindestrichen und Punkten fortgesetzt wird; alles andere ist verboten. Der Bereiniger ersetzt jedes Zeichen außerhalb dieses Satzes durch einen Unterstrich und fügt einen führenden Unterstrich hinzu, wenn das erste überlebende Zeichen eine Ziffer wäre – also wird unit price zu unit_price, 2fa zu _2fa, und eine Spalte namens discount% zu discount_. Gültige Namen passieren unverändert, einschließlich CamelCase und kebab-case, weil das Umschreiben eines Namens, der bereits legal war, Konsumenten brechen würde, die darauf warten.
| CSV-Header | Erzeugtes Element | Warum |
|---|---|---|
| name | <name> | bereits ein legaler XML-Name – unverändert durchgelassen |
| unit price | <unit_price> | Leerzeichen durch Unterstrich ersetzt |
| 2fa | <_2fa> | Namen dürfen nicht mit einer Ziffer beginnen |
| address.city | <address><city> | durch Punkte getrennte Header verschachteln, nicht abflachen |
Was passiert mit den Werten
XML hat keinen separaten Zahl- oder Boolean-Typ – jeder Wert ist Text – also übertragen Zellen als ihre exakten Zeichen, ohne Umwandlung, die Präzision verlieren oder erfinden könnte. Eine leere Zelle wird als fehlendes Feld behandelt, nicht als leerer Wert, also wird das Element weggelassen statt einen String aus selbstschließenden Tags auszugeben, die niemand verbraucht. Escaping wird beim Ausgang angewendet: eine Zelle, die A & B enthält, wird zu A & B im Dokument, und jeder XML-Parser, der das Ergebnis liest, sieht den ursprünglichen Text wieder.
- 02134 bleibt 02134; keine führende Null wird je entfernt, weil der Wert Text ist, sobald er das Raster verlässt.
- Eine mehrzeilige Zelle behält ihre Zeilenumbrüche im Element, und diese Umbrüche sind Daten, kein Format.
- Das <record>-Element ist für jede Zeile gleich, auch bei unregelmäßigen Zeilen – Spalten, die eine Zeile nicht hat, erzeugen einfach kein Element.
Randfälle und wie sie gemeldet werden
Die Verweigerungen des Konverters sind die tragende Teile seines Vertrags. Ein nicht abgeschlossenes quoted field stoppt das Parsing in dieser Zeile mit einem benannten Fehler, weil erraten, wo das Feld endete, jede folgende Zeile still verändern würde. Eine Zeile mit einer anderen Feldanzahl als der Header wird trotzdem konvertiert, aber eine Warnung besagt, dass fehlende Felder abwesend und extras verworfen wurden. Duplikate Header werden konvertiert, wobei der rechts stehende Wert gewinnt, und die Warnung sagt das – das Spreadsheet-Import-Verhalten, explizit gemacht.
- Nicht abgeschlossenes Anführungszeichen: Parsing abgebrochen, Zeile gemeldet, keine Ausgabe geschrieben.
- Unregelmäßige Zeilen: konvertiert mit einer Warnung, die die betroffenen Zeilen benennt.
- Duplikate Header: konvertiert mit einer Warnung; das rechts stehende Vorkommen gewinnt.
Häufig gestellte Fragen
Wandelt das Konvertieren von CSV zu XML meine Datei irgendwo hoch?
Nein. Das CSV-Parsing und das XML-Erstellen laufen beide in diesem Browser-Tab mit Code, der einmal beim Seitenaufruf geladen wurde. Es gibt keinen Upload-Endpunkt, der aufgerufen werden könnte, und die Seite wird mit einer Content-Security-Policy ausgeliefert, deren connect-src 'self' ist, also würde der Browser jede ausgehende Anfrage verweigern, selbst wenn versucht würde, eine zu machen. Beobachten Sie das Network-Panel in DevTools während der Konvertierung – es bleibt leer.
Warum ist meine Ausgabe in <records> und <record>-Tags verpackt?
XML benötigt genau ein Root-Element, und eine CSV-Datei hat keinen natürlichen Namen, den man geben könnte, also verwendet der Konverter eine feste Form: ein <records>-Root mit einem <record>-Element pro Zeile. Header werden zu den Kind-Tags innerhalb jedes Records. Die Hülle macht die Ausgabe ein wohlgeformtes Dokument statt eines Fragments, und jede Zeile ist einfach mit einem XPath wie /records/record ansprechbar.
Wie werden ungültige Tag-Namen behandelt?
Jeder Header wird zu den XML-1.0-Namenregeln bereinigt: Zeichen außerhalb von Buchstaben, Ziffern, Unterstrich, Bindestrich, Punkt und Doppelpunkt werden zu Unterstrichen, und ein Name, der mit einer Ziffer beginnen würde, erhält einen führenden Unterstrich. Also wird unit price zu unit_price und 2fa zu _2fa. Namen, die bereits legal waren, passieren unverändert, was wichtig ist, wenn ein downstream System auf exakte Tag-Namen abstimmt.
Wie werden Sonderzeichen in Zellenwerten escaped?
Textinhalt escaped die drei Zeichen, die XML erfordert: & wird &, < wird < und > wird >. Innerhalb von Attributwerten wird das doppelte Anführungszeichen zusätzlich als " escaped. Escaping passiert nur bei der Ausgabe, also rundet eine Zelle, die A & B enthält, zurück zu genau A & B, wenn ein XML-Parser das Dokument liest – nichts ist doppelt escaped und nichts ist vorab unescaped.
Bleiben meine Zahlen und Postleitzahlen formatiert?
Ja, weil Werte als XML-Text unverändert übernommen werden – es gibt keinen Schritt zur numerischen Umwandlung, der sie umformatieren könnte. 02134 behält seine führende Null, 44.95 behält seine exakte Dezimalform, und ein Wert wie 1e5 bleibt die Zeichen, die Sie eingegeben haben, anstatt expandiert zu werden. Typinformation ist ein CSV- oder JSON-Anliegen; XML-Elemente tragen Text, und der Konverter zweifelt nicht daran.
Was passiert, wenn meine CSV unregelmäßige Zeilen oder duplizierte Header hat?
Beide werden konvertiert, jeweils mit einer expliziten Warnung. Eine kürzere Zeile als der Header wird mit fehlenden Feldern vervollständigt – keine leeren Elemente werden erfunden – und eine längere Zeile hat ihre Extras verworfen, mit der Warnung, die benennt, wie viele Zeilen betroffen waren. Duplizierte Spaltennamen werden nach dem Prinzip „rechts gewinnt“ aufgelöst, genauso wie ein Spreadsheet-Import, und die Warnung listet die beteiligten Namen auf.
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- XML zu CSVKonverter – läuft in Ihrem BrowserÖffnen
- CSV-Regeln nach RFC 4180Leitfaden in verständlicher SpracheÖffnen
- JSON vs. XMLDirekter VergleichÖffnen
- CSV in JSON umwandelnTabellen-Export in Datensätze umwandeln, Anführungszeichen inklusiveÖffnen
- JSON in XML umwandelnMit Attributen und Namen, die XML akzeptiertÖffnen
- JSON validierenSyntax prüfen mit exakter Zeile und Spalte, per Klick reparierenÖffnen