Direkt zum Tool
ViewCSV
Kein Datei-Upload

CSV in XML umwandeln

orders.csv· BEISPIELDATEN15 Zeilen · 8 Spalten
Werte als
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>Laura Koch</customer>
    <city>Leipzig</city>
    <product>Monitor 27"</product>
    <quantity>4</quantity>
    <unit_price>180.60</unit_price>
    <order_date>2026-01-15</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>Mia Müller</customer>
    <city>Köln</city>
    <product>Coffee beans 1kg</product>
    <quantity>3</quantity>
    <unit_price>156.81</unit_price>
    <order_date>2026-02-26</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Anna Fischer</customer>
    <city>Leipzig</city>
    <product>Notebook A5</product>
    <quantity>1</quantity>
    <unit_price>229.89</unit_price>
    <order_date>2026-03-17</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>Jonas Wagner</customer>
    <city>Berlin</city>
    <product>Notebook A5</product>
    <quantity>9</quantity>
    <unit_price>80.03</unit_price>
    <order_date>2026-04-23</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>Anna Koch</customer>
    <city>Dresden</city>
    <product>Monitor 27"</product>
    <quantity>5</quantity>
    <unit_price/>
    <order_date>2026-05-24</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>Felix Becker</customer>
    <city>Frankfurt am Main</city>
    <product>Coffee beans 1kg</product>
    <quantity>5</quantity>
    <unit_price>93.26</unit_price>
    <order_date>2026-06-08</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> Lena Koch </customer>
    <city>München</city>
    <product>Coffee beans 1kg</product>
    <quantity>3</quantity>
    <unit_price>102.06</unit_price>
    <order_date>2026-07-26</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>Sophie Schmidt</customer>
    <city>Frankfurt am Main</city>
    <product>Desk lamp</product>
    <quantity>1</quantity>
    <unit_price>215.25</unit_price>
    <order_date>2026-08-03</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>Leon Müller</customer>
    <city>Frankfurt am Main</city>
    <product>USB-C cable</product>
    <quantity>6</quantity>
    <unit_price>89.20</unit_price>
    <order_date>2026-09-03</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>Leon Meyer</customer>
    <city>Berlin</city>
    <product>Notebook A5</product>
    <quantity>1</quantity>
    <unit_price>101.11</unit_price>
    <order_date>2026-01-10</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>Leon Bauer</customer>
    <city>Frankfurt am Main</city>
    <product>Notebook A5</product>
    <quantity>9</quantity>
    <unit_price>142.33</unit_price>
    <order_date>2026-02-01</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>Felix Schäfer</customer>
    <city>Hamburg</city>
    <product>Monitor 27"</product>
    <quantity>4</quantity>
    <unit_price>161.36</unit_price>
    <order_date>2026-03-24</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>Max Wagner</customer>
    <city>Hamburg</city>
    <product>Monitor 27"</product>
    <quantity>1</quantity>
    <unit_price>184.33</unit_price>
    <order_date>2026-04-13</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>Jonas Müller</customer>
    <city>Hamburg</city>
    <product>Desk lamp</product>
    <quantity>8</quantity>
    <unit_price>205.98</unit_price>
    <order_date>2026-05-06</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Anna Fischer</customer>
    <city>Leipzig</city>
    <product>Notebook A5</product>
    <quantity>1</quantity>
    <unit_price>229.89</unit_price>
    <order_date>2026-03-17</order_date>
    <status>refunded</status>
  </row>
</rows>

15 Zeilen · 1 Datei

Öffnen Sie eine CSV-Datei oder fügen Sie sie ein, und Sie erhalten wohlgeformtes XML: ein Wurzelelement, ein Zeilenelement pro Datensatz und jeden Wert als Kindelement oder Attribut. Spaltennamen, die keine zulässigen XML-Namen sind, etwa Order ID oder 2024 total, werden umbenannt, und jede Umbenennung wird aufgelistet. Die Datei wird in Ihrem Browser umgewandelt und nie hochgeladen.

So wandeln Sie CSV in XML um

  1. Wählen Sie Datei öffnen, ziehen Sie eine .csv-, .tsv- oder .txt-Datei auf das Werkzeug, oder wählen Sie Einfügen. Sehen die Spalten falsch aus, prüfen Sie Trennzeichen und Codierung unter Importeinstellungen.
  2. Benennen Sie Wurzelelement und Zeilenelement (standardmäßig rows und row) so, wie es das empfangende System erwartet.
  3. Wählen Sie Werte als, den Umgang mit leeren Werten, die Einrückung und die Deklaration, und wählen Sie dann Kopieren oder „XML herunterladen“.

Erwartet das einlesende System bestimmte Tag-Namen, benennen Sie die CSV-Spalten zuerst mit CSV-Spalten zuordnen um – dann ist keine automatische Umbenennung nötig.

Was die einzelnen Optionen bewirken

KindelementeDie Standardeinstellung: <row><Customer>Smith &amp; Sons</Customer>…</row>. Behält Zeilenumbrüche in Werten bei und passt zu den meisten Importwerkzeugen.
AttributeEin selbstschließendes Element pro Zeile: <row Customer="Smith &amp; Sons" …/>. Kompakt; Tabstopps und Zeilenumbrüche in Werten werden als &#9;, &#10; und &#13; geschrieben, damit ein Parser sie erhält.
Leere Werte weglassenStandardmäßig aus; eine leere Zelle wird dann zu einem leeren Element wie <Ship_date/>. Ist die Option an, fehlt das Element oder Attribut in dieser Zeile.
Einrückung2 Leerzeichen (Standard), 4 Leerzeichen oder Keine (minimiert) – dann steht das ganze Dokument in einer Zeile.
XML-Deklaration hinzufügenStandardmäßig an: Die erste Zeile lautet <?xml version="1.0" encoding="UTF-8"?>. Schalten Sie die Option aus, wenn das XML in ein anderes Dokument eingebettet wird.

Für die Namen von Wurzel- und Zeilenelement gelten dieselben Namensregeln wie für Spaltenüberschriften; ein leerer oder ungültiger Eintrag fällt auf rows bzw. row zurück oder erhält einen vorangestellten Unterstrich.

Wie aus Spaltennamen XML-Namen werden

  • Leerzeichen werden zu _, ebenso jedes Zeichen außer Buchstaben, Ziffern, ., - und _: Total (EUR) → Total__EUR_, e-mail:work → e-mail_work. Doppelpunkte werden ersetzt, es entstehen also keine Namensraum-Präfixe.
  • Ein Name, der mit einer Ziffer, . oder - beginnt, erhält einen vorangestellten Unterstrich (2024 total → _2024_total); ebenso ein Name, der – in beliebiger Schreibweise – mit dem von XML reservierten xml beginnt (xml_ref → _xml_ref).
  • Ergeben zwei Spaltenüberschriften denselben Namen, erhält der zweite _2 (a b und a_b → a_b, a_b_2). XML-Namen unterscheiden Groß- und Kleinschreibung, Name und name bleiben also verschieden.
  • Buchstaben aus jeder Schrift bleiben erhalten: Größe und 価格 sind gültige XML-Namen. Eine leere Spaltenüberschrift wird zuerst zu Column 7, dann zu Column_7.
  • Jede Umbenennung wird unter den Optionen als old → new aufgeführt, und ein Hinweis über der Vorschau nennt die Anzahl.

Wie Werte geschrieben werden

  • &, < und > werden im Elementtext maskiert; in Attributen zusätzlich ". Ansonsten werden die Werte genau wie in der CSV-Datei geschrieben: 00731 behält seine Nullen, und es wird kein Typ geraten.
  • XML 1.0 verbietet die meisten Steuerzeichen (U+0000–U+001F außer Tabstopp, Zeilenvorschub und Wagenrücklauf), U+FFFE, U+FFFF und ungepaarte Surrogate – auch in maskierter Form. Sie werden entfernt, und die Zahl der betroffenen Werte wird angezeigt.
  • Kommas, Anführungszeichen und Zeilenumbrüche in Anführungszeichen werden nach RFC 4180 gelesen; ein Zeilenumbruch bleibt in einem Kindelement ein echter Zeilenumbruch.
  • Die Ausgabe ist immer UTF-8.

Fehlerbehebung

  • Mein Importwerkzeug findet ein Feld nicht. Es wurde vermutlich umbenannt. Prüfen Sie die Liste unter den Optionen, und benennen Sie die Spalte in der CSV-Datei um oder passen Sie die Zuordnung im empfangenden System an.
  • Ein Parser meldet einen Codierungsfehler. Öffnen Sie die Quelldatei unter Importeinstellungen mit ihrer tatsächlichen Codierung; das XML ist nur dann korrektes UTF-8, wenn die CSV-Datei richtig decodiert wurde.
  • Alles steht in einem Element. Das Trennzeichen wurde falsch erkannt. Stellen Sie unter Importeinstellungen Komma, Semikolon, Tabstopp oder senkrechten Strich ein.
  • Ich brauche CDATA, Namensräume oder ein Schema. Der Konverter schreibt nur einfache Elemente und Attribute; ergänzen Sie solche Angaben in einem späteren Schritt.

Grenzen und Datenschutz

Dateien bis 25 MB, 100.000 Zeilen oder 2 Millionen Zellen öffnen mit Live-Vorschau der ersten 200 Zeilen. Größere Dateien werden als Datenstrom umgewandelt: Die Datei wird zweimal abschnittsweise gelesen (einmal, um die Spalten zu erfassen, einmal zum Schreiben), ein Hinweis besagt, dass der Download die ganze Datei umfasst, und Kopieren wird nicht angeboten. Eine einzelne Ausgabedatei ist auf 4 GB begrenzt.

Die Umwandlung läuft in einem Hintergrund-Worker in diesem Tab; die Seite bleibt bedienbar, und Abbrechen beendet den Vorgang. Die CSV-Datei wird nie an einen Server gesendet.

Beispiel

Ein Bestellexport mit Leerzeichen und Klammern in den Spaltenüberschriften, einem kaufmännischen Und, spitzen Klammern und einem leeren Datum, umgewandelt mit den Standardeinstellungen. Drei Spaltenüberschriften werden umbenannt; das leere Ship date wird zu <Ship_date/>.

CSV
Order ID,Customer,Total (EUR),Ship date
10071,"Smith & Sons",249.00,2025-02-03
10072,"Café <Lumière>",18.50,
XML-Ausgabe
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <Order_ID>10071</Order_ID>
    <Customer>Smith &amp; Sons</Customer>
    <Total__EUR_>249.00</Total__EUR_>
    <Ship_date>2025-02-03</Ship_date>
  </row>
  <row>
    <Order_ID>10072</Order_ID>
    <Customer>Café &lt;Lumière&gt;</Customer>
    <Total__EUR_>18.50</Total__EUR_>
    <Ship_date/>
  </row>
</rows>

Fragen und Antworten

Warum wurde mein Spaltenname geändert?

XML-Elementnamen dürfen keine Leerzeichen und die meisten Satzzeichen enthalten und weder mit einer Ziffer noch mit xml beginnen. Der Konverter nimmt die kleinste Änderung vor, die einen zulässigen, eindeutigen Namen ergibt, und listet jede auf.

Soll ich Elemente oder Attribute verwenden?

Verwenden Sie Kindelemente, sofern das empfangende System nicht ausdrücklich Attribute verlangt. Elemente behalten Zeilenumbrüche wie geschrieben; bei Attributwerten normalisieren XML-Parser den Leerraum – deshalb codiert der Konverter Tabstopps und Zeilenumbrüche als Zeichenreferenzen.

Erhalten Zahlen oder Datumswerte einen Typ?

Nein. XML hat keine eingebauten Werttypen, daher wird jeder Wert als der Text aus der CSV-Datei geschrieben. Typen ergeben sich aus dem Schema oder dem Programm, das die Datei liest.

Standards und Quellen