ToolDeck

CSV to XML

Converteer CSV-gegevens naar XML-formaat

Probeer een voorbeeld

CSV-invoer

XML-uitvoer

Draait lokaal · Veilig om secrets te plakken
XML-uitvoer verschijnt hier…

Wat is CSV naar XML-conversie?

CSV naar XML-conversie zet kommagescheiden waarden om naar Extensible Markup Language (XML)-documenten. Elke rij van de CSV wordt een XML-element, en elke kolomkop wordt de naam van een child-elementtag. Het resultaat is een hiërarchisch, zelfbeschrijvend document dat systemen kunnen valideren tegen een schema (XSD of DTD) en verwerken met standaard XML-tooling zoals XSLT, XPath en SAX/DOM-parsers.

XML is al sinds 1998 een standaard voor gegevensuitwisseling, toen het W3C de XML 1.0-specificatie publiceerde. Hoewel JSON XML in veel web-API's heeft vervangen, is XML nog steeds het vereiste formaat voor SOAP-webservices, RSS/Atom-feeds, SVG-graphics, Office Open XML-documenten (.docx, .xlsx), Android-resourcebestanden, Maven/Gradle-buildconfiguraties en gereguleerde sectoren zoals gezondheidszorg (HL7 CDA), financiën (FpML, XBRL) en overheid (NIEM). Als je brongegevens een spreadsheet of database-export zijn, is CSV-naar-XML-conversie de manier om ze in deze systemen te krijgen.

Een correcte CSV naar XML-converter moet RFC 4180-randgevallen verwerken: geciteerde velden met komma's of regeleinden, geëscapete dubbele aanhalingstekens en wisselende scheidingstekens. Aan de XML-kant moet de converter de vijf voorgedefinieerde XML-entiteiten escapen (& < > " '), geldige elementnamen genereren op basis van kolomkoppen (door spaties en speciale tekens te vervangen) en goed gevormd uitvoer produceren met een correcte XML-declaratie en consistente codering.

Waarom een CSV naar XML-converter gebruiken?

XML handmatig schrijven vanuit spreadsheetgegevens is traag en foutgevoelig. Een ontbrekende sluitende tag of een vergeten escaped ampersand levert ongeldige XML op die downstream parsers breekt. Deze converter verwerkt het parsen, escapen en genereren van elementen in één stap.

Direct converteren in je browser
Plak CSV en ontvang goed gevormde XML-uitvoer met een correcte declaratie, rootelement en geneste child-elementen. Geen command-line tools of library-installaties nodig.
🔒
Gegevens privé houden
Alle conversie wordt lokaal in je browser uitgevoerd met JavaScript. Je CSV-gegevens worden nooit naar een server geüpload, nooit gelogd en nergens buiten je eigen machine opgeslagen.
🎯
Geldige, goed gevormde XML genereren
De uitvoer escapet XML-entiteiten, maakt kolomkopnamen geschikt als geldige elementtags en produceert correct geneste opmaak die elke XML-validator of linter doorstaat.
📋
Elk CSV-dialect verwerken
Detecteert automatisch komma's, puntkomma's, tabs en pipes als scheidingstekens. Ondersteunt RFC 4180-aanhalingsregels inclusief geëscapete dubbele aanhalingstekens, meerdere regels per veld en BOM-voorafgaande UTF-8-bestanden.

CSV naar XML-toepassingen

SOAP- en legacy API-integratie
Veel bedrijfssystemen gebruiken nog steeds SOAP-webservices die XML-requestbodies vereisen. Converteer een CSV-gegevensexport naar XML-payloads die overeenkomen met het WSDL-schema van de service voordat je verzoeken verstuurt.
Buildconfiguratiebestanden genereren
Genereer Maven pom.xml-afhankelijkheidslijsten, Android-resourcebestanden of Spring bean-definities vanuit een spreadsheet met afhankelijkheden, strings of configuratie-invoer. Produceer XML-configuraties in bulk vanuit één CSV-bron.
ETL in datapipelines
Voer CSV-exports uit databases of analysetools in XML-gebaseerde ETL-pipelines. Tools zoals Apache NiFi, Talend en SSIS accepteren XML-invoer voor transformatieworkflows die op elke stap schemavalidatie vereisen.
Regelgeving en compliance-rapportage
Sectoren zoals gezondheidszorg (HL7 CDA), financiën (XBRL, FpML) en overheid (NIEM) schrijven XML-geformatteerde indieningen voor. Converteer tabellarische compliance-gegevens naar de vereiste XML-structuur vóór indiening.
RSS- en Atom-feedgeneratie
Zet een CSV-lijst met artikelen, titels en datums om in een RSS 2.0- of Atom-feed. Content management-workflows starten vaak met een spreadsheet van berichten die als syndicatiefeed gepubliceerd moeten worden.
XML-fundamenten aanleren
Studenten die XML leren, kunnen vertrouwde CSV-gegevens plakken en de resulterende elementhiërarchie, nesting en entity-escaping bekijken. Het vergelijken van invoer en uitvoer maakt abstracte concepten zoals welgevormdheid en geldigheid concreet.

Referentie: CSV naar XML-mapping

Inzicht in hoe elk onderdeel van een CSV-bestand naar XML-structuur wordt omgezet, helpt je de uitvoerindeling te voorspellen en je gegevens vóór conversie aan te passen.

CSV-conceptXML-equivalentDetails
CSV fileXML documentThe entire file maps to a root element containing all records
Header rowElement tag namesEach column header becomes the tag name for child elements
Data row<row> elementEach row becomes a repeating child element of the root
Cell valueText nodeCell content becomes the text inside the corresponding tag
Empty cellEmpty element or omittedCan be rendered as <field/> or excluded from output
Comma delimiterXML structureDelimiters are replaced by element nesting and closing tags

CSV versus XML

CSV is een plat, scheidingsteken-gebaseerd formaat zonder ingebouwd schema of gegevenstypen. XML is een hiërarchische, zelfbeschrijvende opmaaktaal die schema's, namespaces en complexe nesting ondersteunt. De keuze tussen beide hangt af van de vereisten van je downstream systeem.

CSV
Platte tekst, één record per regel. Geen gegevenstypen: elke waarde is een string. Geen hiërarchie of nesting. Minimale bestandsgrootte. Universeel ondersteund door spreadsheets, databases en scripttalen. Gedefinieerd door RFC 4180. Het meest geschikt voor eenvoudige tabellarische gegevensoverdracht tussen systemen die beide de kolomindeling begrijpen.
XML
Hiërarchische opmaak met openings- en sluitingstags. Ondersteunt attributen, namespaces, gemengde inhoud en CDATA-secties. Kan worden gevalideerd tegen XSD- of DTD-schema's. Verwerkt door XSLT, XPath, SAX en DOM-parsers. Groter bestandsformaat dan CSV door tag-overhead. Vereist door SOAP-API's, Office Open XML, RSS/Atom en veel gereguleerde sectoren.

Codevoorbeelden

Hieronder staan werkende voorbeelden van CSV naar XML-conversie in verschillende talen. Elk voorbeeld parseert de CSV-headerrij als elementtagnamen, wikkelt elke gegevensrij in een containerelement en escapet XML-entiteiten in celinhoud.

JavaScript (browser / Node.js)
// CSV string → XML with proper escaping
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

function csvToXml(csv, rootTag = 'data', rowTag = 'row') {
  const rows = csv.trim().split('\n').map(r => r.split(','))
  const [headers, ...data] = rows
  const xmlRows = data.map(row => {
    const fields = headers.map((h, i) => {
      const val = (row[i] || '').replace(/&/g, '&amp;')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
      return `    <${h}>${val}</${h}>`
    }).join('\n')
    return `  <${rowTag}>\n${fields}\n  </${rowTag}>`
  }).join('\n')
  return `<?xml version="1.0" encoding="UTF-8"?>\n<${rootTag}>\n${xmlRows}\n</${rootTag}>`
}

console.log(csvToXml(csv))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <data><row><name>Alice</name><age>30</age>...</row>...</data>
Python
import csv, io
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.DictReader(io.StringIO(csv_string))
root = Element('data')

for row in reader:
    row_el = SubElement(root, 'row')
    for key, value in row.items():
        child = SubElement(row_el, key)
        child.text = value

# Pretty-print with declaration
raw = tostring(root, encoding='unicode')
pretty = parseString(raw).toprettyxml(indent='  ')
print(pretty)
# → <?xml version="1.0" ?>
# → <data>
# →   <row>
# →     <name>Alice</name>
# →     <age>30</age>
# →     <city>Berlin</city>
# →   </row>
# →   ...
# → </data>
Go
package main

import (
	"encoding/csv"
	"encoding/xml"
	"fmt"
	"os"
	"strings"
)

type Field struct {
	XMLName xml.Name
	Value   string `xml:",chardata"`
}

type Row struct {
	XMLName xml.Name `xml:"row"`
	Fields  []Field
}

type Data struct {
	XMLName xml.Name `xml:"data"`
	Rows    []Row
}

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()
	headers := records[0]

	var data Data
	for _, rec := range records[1:] {
		row := Row{}
		for i, h := range headers {
			row.Fields = append(row.Fields, Field{
				XMLName: xml.Name{Local: h},
				Value:   rec[i],
			})
		}
		data.Rows = append(data.Rows, row)
	}

	out, _ := xml.MarshalIndent(data, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <data><row><name>Alice</name>...</row>...</data>
}
CLI (csvkit / xmlstarlet)
# Using Python's csv and xml modules via one-liner
python3 -c "
import csv, sys
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

reader = csv.DictReader(sys.stdin)
root = Element('data')
for row in reader:
    r = SubElement(root, 'row')
    for k, v in row.items():
        SubElement(r, k).text = v
print(parseString(tostring(root, encoding='unicode')).toprettyxml(indent='  '))
" < data.csv

# Using Miller (mlr) — a dedicated CSV/JSON/XML tool
mlr --icsv --oxml cat data.csv

Veelgestelde vragen

Hoe werkt CSV naar XML-conversie?
De converter leest de eerste rij van je CSV als kolomkoppen. Elke volgende rij wordt een XML-element, en elke celwaarde wordt verpakt in een child-element dat is vernoemd naar de bijbehorende kolomkop. Het resultaat is een goed gevormd XML-document met een rootelement dat per gegevensrij één child-element bevat.
Wat gebeurt er met speciale tekens zoals & en < in mijn CSV-gegevens?
De converter escapet alle vijf voorgedefinieerde XML-entiteiten: & wordt &amp;, < wordt &lt;, > wordt &gt;, " wordt &quot; en ' wordt &apos;. Dit produceert geldige XML die parsers niet breekt en geen welgevormdheidsfouten veroorzaakt.
Kan ik aangepaste tagnamen instellen voor het root- en rij-element?
Ja. Met het hulpmiddel kun je de naam van het rootelement (standaard: "data") en het rij-element (standaard: "row") instellen. Kolomkoppen uit de CSV worden altijd de namen van de child-elementen. Als een kolomkop spaties of tekens bevat die ongeldig zijn in XML-elementnamen, worden deze automatisch gesaneerd.
Wat is het verschil tussen CSV naar XML en CSV naar JSON?
CSV naar XML produceert een hiërarchisch opmaakdocument met openings- en sluitingstags, een XML-declaratie en ondersteuning voor schemavalidatie (XSD/DTD). CSV naar JSON produceert een lichtgewicht array van sleutel-waarde-objecten. Gebruik XML wanneer je doelsysteem dit vereist (SOAP-API's, gereguleerde formaten, RSS-feeds). Gebruik JSON voor REST-API's, JavaScript-frontends en NoSQL-databases.
Hoe valideer ik de gegenereerde XML-uitvoer?
Plak de uitvoer in een XML-validator om welgevormdheid te controleren (correcte nesting, juiste entity-escaping, overeenkomende tags). Voor schemavalidatie geef je een XSD-bestand op en gebruik je een tool zoals xmllint, Xerces of een online XSD-validator. De XML die dit hulpmiddel produceert is altijd goed gevormd, maar schemageldigheid hangt ervan af of de structuur overeenkomt met je doelschema.
Verwerkt de converter grote CSV-bestanden?
Het hulpmiddel draait in je browser, dus de prestaties zijn afhankelijk van het beschikbare geheugen. Bestanden tot enkele megabytes (tienduizenden rijen) worden zonder problemen geconverteerd op moderne hardware. Voor zeer grote bestanden (100MB+) kun je beter een command-line tool gebruiken, zoals Python's csv- en xml.etree-modules of Go's encoding/csv- en encoding/xml-pakketten, die gegevens als stream verwerken zonder alles in het geheugen te laden.
Is de gegenereerde XML compatibel met XSLT-transformaties?
Ja. De uitvoer is standaard goed gevormde XML met een declaratie en consistente elementstructuur. Je kunt elke XSLT-stylesheet toepassen om deze om te zetten naar HTML, een ander XML-schema of platte tekst. De voorspelbare structuur (root > row > veld-elementen) maakt het schrijven van XPath-selectoren en XSLT-sjablonen eenvoudig.