ToolDeck

CSV to XML

Konvertera CSV-data till XML-format

Prova ett exempel

CSV-inmatning

XML-utmatning

Körs lokalt · Säkert att klistra in hemligheter
XML-utmatning visas här…

Vad är CSV till XML-konvertering?

CSV till XML-konvertering omvandlar kommaseparerade värden till XML-dokument (Extensible Markup Language). Varje rad i CSV-filen blir ett XML-element, och varje kolumnrubrik mappas till ett underordnat elementtaggnamn. Resultatet är ett hierarkiskt, självbeskrivande dokument som system kan validera mot ett schema (XSD eller DTD) och bearbeta med standardverktyg för XML, till exempel XSLT, XPath och SAX/DOM-tolkare.

XML har varit en standard för datautbyte sedan W3C publicerade XML 1.0-specifikationen 1998. Även om JSON har ersatt XML i många webb-API:er är XML fortfarande det obligatoriska formatet för SOAP-webbtjänster, RSS/Atom-flöden, SVG-grafik, Office Open XML-dokument (.docx, .xlsx), Android-resursfiler, Maven/Gradle-byggkonfigurationer samt reglerade branscher som vård (HL7 CDA), finans (FpML, XBRL) och offentlig sektor (NIEM). När källdata är ett kalkylblad eller databasexport är CSV till XML-konvertering sättet att föra in den i dessa system.

En korrekt CSV till XML-konverterare måste hantera RFC 4180-kantfall: citerade fält som innehåller kommatecken eller radbrytningar, undkomna dubbla citattecken och varierande avgränsare. På XML-sidan måste den undkomma de fem fördefinierade XML-entiteterna (& < > " '), generera giltiga elementnamn från rubriker (ersätta mellanslag och ogiltiga tecken) och producera välformaterad utmatning med en korrekt XML-deklaration och konsekvent kodning.

Varför använda en CSV till XML-konverterare?

Att skriva XML för hand från kalkylbladsdata är långsamt och felbenäget. En saknad sluttagg eller ett bortglömt ampersand-escape producerar ogiltig XML som bryter efterföljande tolkare. Den här konverteraren hanterar tolkning, escaping och elementgenerering i ett enda steg.

Konvertera direkt i webbläsaren
Klistra in CSV och få välformaterad XML-utmatning med en korrekt deklaration, rotelement och nästlade underordnade element. Inga kommandoradsverktyg eller biblioteksinstallationer krävs.
🔒
Håll data privat
All konvertering sker lokalt i din webbläsare med JavaScript. Din CSV-data laddas aldrig upp till en server, loggas aldrig och lagras aldrig någonstans utanför din dator.
🎯
Generera giltig, välformaterad XML
Utmatningen escaper XML-entiteter, sanerar rubriknamn till giltiga elementtaggar och producerar korrekt nästlad uppmärkning som godkänns av alla XML-validatorer och linters.
📋
Hantera alla CSV-dialekter
Identifierar automatiskt kommatecken, semikolon, tabbar och pipe-tecken som avgränsare. Stöder RFC 4180-citeringsregler inklusive undkomna dubbla citattecken, flerlinjefält och BOM-prefixade UTF-8-filer.

Användningsfall för CSV till XML

SOAP och integration med äldre API:er
Många enterprise-system använder fortfarande SOAP-webbtjänster som kräver XML-begäransstrukturer. Konvertera en CSV-dataexport till XML-nyttolaster som matchar tjänstens WSDL-schema innan du skickar begäranden.
Generera byggkonfigurationsfiler
Generera Maven pom.xml-beroendlistor, Android-resursfiler eller Spring Bean-definitioner från ett kalkylblad med beroenden, strängar eller konfigurationsposter. Batch-producera XML-konfigurationer från en enda CSV-källa.
ETL-datapipelines
Mata in CSV-exporter från databaser eller analysverktyg i XML-baserade ETL-pipelines. Verktyg som Apache NiFi, Talend och SSIS accepterar XML-inmatning för transformationsarbetsflöden som kräver schemavalidering i varje steg.
Regelefterlevnad och rapportering
Branscher som vård (HL7 CDA), finans (XBRL, FpML) och offentlig sektor (NIEM) kräver XML-formaterade inlämningar. Konvertera tabellbaserade efterlevnadsdata till rätt XML-struktur innan inlämning.
Generering av RSS- och Atom-flöden
Omvandla en CSV-lista med artiklar, titlar och datum till ett RSS 2.0- eller Atom-flöde. Arbetsflöden för innehållshantering börjar ofta med ett kalkylblad med inlägg som behöver publiceras som ett syndikationsflöde.
Lära ut XML-grunderna
Studenter som lär sig XML kan klistra in bekant CSV-data och se den resulterande elementhierarkin, nästlingen och entity-escapingen. Att jämföra inmatning och utmatning gör abstrakta begrepp som välformad XML och validitet konkreta.

Referens för CSV till XML-mappning

Att förstå hur varje del av en CSV-fil mappas till XML-struktur hjälper dig att förutsäga utmatningsformatet och justera dina data innan konvertering.

CSV-begreppXML-motsvarighetDetaljer
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 vs XML

CSV är ett platt, avgränsarbaserat format utan inbyggt schema eller datatyper. XML är ett hierarkiskt, självbeskrivande märkspråk som stöder scheman, namnrymder och komplex nästling. Valet mellan dem beror på vilka krav ditt målsystem ställer.

CSV
Ren text, en post per rad. Inga datatyper: alla värden är strängar. Ingen hierarki eller nästling. Minimal filstorlek. Stöds av kalkylblad, databaser och skriptspråk. Definieras av RFC 4180. Bäst för enkel tabellöverföring mellan system som båda förstår kolumnlayouten.
XML
Hierarkisk uppmärkning med öppnings- och sluttaggar. Stöder attribut, namnrymder, blandat innehåll och CDATA-sektioner. Kan valideras mot XSD- eller DTD-scheman. Bearbetas av XSLT, XPath, SAX och DOM-tolkare. Större filstorlek än CSV på grund av tagg-overhead. Krävs av SOAP API:er, Office Open XML, RSS/Atom och många reglerade branscher.

Kodexempel

Nedan finns fungerande exempel på CSV till XML-konvertering i olika programmeringsspråk. Varje exempel tolkar CSV-rubrikraden som elementtaggnamn, omsluter varje datarad i ett behållarelement och escaper XML-entiteter i cellinnehåll.

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

Vanliga frågor

Hur fungerar CSV till XML-konvertering?
Konverteraren läser den första raden i din CSV som kolumnrubriker. Varje efterföljande rad blir ett XML-element, och varje cellvärde omsluts i ett underordnat element som är uppkallat efter sin kolumnrubrik. Resultatet är ett välformaterat XML-dokument med ett rotelement som innehåller ett underordnat element per datarad.
Vad händer med specialtecken som & och < i mina CSV-data?
Konverteraren escaper alla fem fördefinierade XML-entiteter: & blir &amp;amp;, < blir &amp;lt;, > blir &amp;gt;, " blir &amp;quot; och ' blir &amp;apos;. Detta producerar giltig XML som inte bryter tolkare eller orsakar välformningsfel.
Kan jag använda egna taggnamn för rot- och radelementen?
Ja. Verktyget låter dig ange rotelementets namn (standard: "data") och radelementets namn (standard: "row"). Kolumnrubriker från CSV blir alltid underordnade elementnamn. Om en rubrik innehåller mellanslag eller tecken som är ogiltiga i XML-elementnamn sanerar verktyget dem automatiskt.
Vad är skillnaden mellan CSV till XML och CSV till JSON?
CSV till XML producerar ett hierarkiskt märkdokument med öppnings- och sluttaggar, en XML-deklaration och stöd för schemavalidering (XSD/DTD). CSV till JSON producerar en lättare array av nyckel-värde-objekt. Använd XML när ditt målsystem kräver det (SOAP API:er, reglerade format, RSS-flöden). Använd JSON för REST API:er, JavaScript-frontends och NoSQL-databaser.
Hur validerar jag den genererade XML-utmatningen?
Klistra in utmatningen i en XML-validator för att kontrollera välformning (korrekt nästling, korrekt entity-escaping, matchande taggar). För schemavalidering, ange en XSD-fil och använd ett verktyg som xmllint, Xerces eller en online-XSD-validator. XML-utmatningen från det här verktyget är alltid välformaterad, men schemavaliditeten beror på om strukturen matchar ditt målschema.
Hanterar konverteraren stora CSV-filer?
Verktyget körs i din webbläsare, så prestandan beror på tillgängligt minne. Filer upp till några megabyte (tiotusentals rader) konverteras utan problem på modern hårdvara. För mycket stora filer (100 MB+) kan du använda ett kommandoradsverktyg som Pythons csv- och xml.etree-moduler eller Gos encoding/csv- och encoding/xml-paket, som bearbetar data som en ström utan att läsa in allt i minnet.
Är den genererade XML-filen kompatibel med XSLT-transformationer?
Ja. Utmatningen är standard välformaterad XML med en deklaration och konsekvent elementstruktur. Du kan tillämpa valfritt XSLT-formatmall för att omvandla den till HTML, ett annat XML-schema eller ren text. Den förutsägbara strukturen (rot > rad > fältelement) gör det enkelt att skriva XPath-selektorer och XSLT-mallar.