ToolDeck

CSV to XML

Převod CSV dat do formátu XML

Zkusit příklad

CSV vstup

XML výstup

Běží lokálně · Bezpečné pro vkládání tajných údajů
XML výstup se zobrazí zde…

Co je převod CSV na XML?

Převod CSV na XML transformuje hodnoty oddělené čárkami na dokumenty Extensible Markup Language (XML). Každý řádek CSV se stane elementem XML a každý záhlaví sloupce se mapuje na název podřízeného elementu. Výsledkem je hierarchický, samo-popisný dokument, který lze ověřit oproti schématu (XSD nebo DTD) a zpracovat standardním XML nástrojovým vybavením, jako jsou XSLT, XPath a parsery SAX/DOM.

XML je standardem pro výměnu dat od roku 1998, kdy W3C publikovalo specifikaci XML 1.0. Přestože JSON nahradil XML v mnoha webových API, XML zůstává povinným formátem pro SOAP webové služby, RSS/Atom kanály, vektorovou grafiku SVG, dokumenty Office Open XML (.docx, .xlsx), soubory zdrojů pro Android, sestavovací konfigurace Maven/Gradle a regulovaná odvětví, jako je zdravotnictví (HL7 CDA), finance (FpML, XBRL) a státní správa (NIEM). Pokud jsou zdrojová data tabulka nebo export z databáze, převod CSV na XML je způsob, jak je dostat do těchto systémů.

Správný převodník CSV na XML musí zvládat hraniční případy RFC 4180: pole obsahující čárky nebo konce řádků uzavřená v uvozovkách, escapované dvojité uvozovky a různé oddělovače. Na straně XML musí escapovat pět předdefinovaných XML entit (& < > " '), generovat platné názvy elementů ze záhlaví (nahrazením mezer a speciálních znaků) a produkovat správně utvořený výstup s patřičnou XML deklarací a konzistentním kódováním.

Proč používat převodník CSV na XML?

Ruční psaní XML z dat tabulkového procesoru je pomalé a náchylné k chybám. Chybějící uzavírací tag nebo zapomenutý escape ampersandu způsobí neplatné XML, které rozbije parsery v navazujících systémech. Tento převodník zajišťuje parsování, escapování a generování elementů v jediném kroku.

Okamžitý převod v prohlížeči
Vložte CSV a získejte správně utvořený XML výstup s patřičnou deklarací, kořenovým elementem a vnořenými podřízenými elementy. Žádné nástroje příkazové řádky ani instalace knihoven nejsou potřeba.
🔒
Data zůstávají v prohlížeči
Veškerý převod probíhá lokálně ve vašem prohlížeči pomocí JavaScriptu. Vaše CSV data nejsou nikdy nahrávána na server, nikdy protokolována ani nikde ukládána mimo vaše zařízení.
🎯
Generuje platné, správně utvořené XML
Výstup escapuje XML entity, sanitizuje názvy záhlaví na platné tagy elementů a vytváří správně vnořené značkování, které projde jakýmkoli XML validátorem nebo linterem.
📋
Podpora libovolného dialektu CSV
Automaticky rozpozná čárky, středníky, tabulátory a svislice jako oddělovače. Podporuje pravidla uvozování podle RFC 4180 včetně escapovaných dvojitých uvozovek, víceřádkových polí a souborů UTF-8 s BOM.

Případy použití CSV na XML

Integrace SOAP a starších API
Mnoho podnikových systémů stále využívá SOAP webové služby, které vyžadují těla požadavků ve formátu XML. Převeďte export CSV dat na XML payloady odpovídající schématu WSDL dané služby před odesláním požadavků.
Generování konfiguračních souborů sestavení
Generujte seznamy závislostí Maven pom.xml, soubory zdrojů pro Android nebo definice Spring bean ze tabulky závislostí, řetězců nebo konfiguračních záznamů. Hromadně vytvářejte XML konfigurace z jediného CSV zdroje.
ETL v datovém pipeline
Předávejte CSV exporty z databází nebo analytických nástrojů do XML-based ETL pipeline. Nástroje jako Apache NiFi, Talend a SSIS přijímají XML vstupy pro transformační pracovní postupy vyžadující validaci schématu v každé fázi.
Regulační a compliance reporting
Odvětví jako zdravotnictví (HL7 CDA), finance (XBRL, FpML) a státní správa (NIEM) vyžadují podání ve formátu XML. Převeďte tabulková compliance data do požadované XML struktury před podáním.
Generování RSS a Atom kanálů
Převeďte CSV seznam článků, názvů a dat na RSS 2.0 nebo Atom kanál. Pracovní postupy pro správu obsahu často začínají tabulkou příspěvků, které je třeba publikovat jako syndikační kanál.
Výuka základů XML
Studenti učící se XML mohou vložit známá CSV data a vidět výslednou hierarchii elementů, vnoření a escapování entit. Porovnávání vstupu a výstupu zpřesní abstraktní koncepty jako správná utvořenost a platnost.

Referenční přehled mapování CSV na XML

Pochopení toho, jak se každá část CSV souboru mapuje na strukturu XML, vám pomůže předpovědět výstupní formát a upravit data před převodem.

Koncept CSVEkvivalent XMLPodrobnosti
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 je plochý formát s oddělovači bez vlastního schématu nebo datových typů. XML je hierarchický, samo-popisný značkovací jazyk podporující schémata, jmenné prostory a komplexní vnoření. Volba mezi nimi závisí na požadavcích vašeho cílového systému.

CSV
Prostý text, jeden záznam na řádek. Žádné datové typy: každá hodnota je řetězec. Žádná hierarchie ani vnoření. Minimální velikost souboru. Univerzálně podporováno tabulkovými procesory, databázemi a skriptovacími jazyky. Definováno specifikací RFC 4180. Nejlepší pro jednoduchý přenos tabulkových dat mezi systémy, které znají rozložení sloupců.
XML
Hierarchické značkování s otevíracími a uzavíracími tagy. Podporuje atributy, jmenné prostory, smíšený obsah a sekce CDATA. Lze ověřit oproti schématům XSD nebo DTD. Zpracováváno pomocí XSLT, XPath, SAX a DOM parserů. Větší velikost souboru než CSV kvůli režii tagů. Vyžadováno SOAP API, Office Open XML, RSS/Atom a mnoha regulovanými odvětvími.

Ukázky kódu

Níže jsou funkční příklady převodu CSV na XML v různých programovacích jazycích. Každý příklad parsuje záhlaví CSV jako názvy tagů elementů, obaluje každý datový řádek do kontejnerového elementu a escapuje XML entity v obsahu buněk.

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

Často kladené otázky

Jak funguje převod CSV na XML?
Převodník přečte první řádek vašeho CSV jako záhlaví sloupců. Každý další řádek se stane elementem XML a každá hodnota buňky je obalena podřízeným elementem pojmenovaným podle záhlaví sloupce. Výsledkem je správně utvořený XML dokument s kořenovým elementem obsahujícím jeden podřízený element pro každý datový řádek.
Co se stane se speciálními znaky jako & a < v mých CSV datech?
Převodník escapuje všech pět předdefinovaných XML entit: &amp; se stane &amp;, &lt; se stane &lt;, &gt; se stane &gt;, &quot; se stane &quot; a &apos; se stane &apos;. Tím vznikne platné XML, které nerozbije parsery ani nezpůsobí chyby správné utvořenosti.
Mohu použít vlastní názvy tagů pro kořenový element a element řádku?
Ano. Nástroj umožňuje nastavit název kořenového elementu (výchozí: "data") a název elementu řádku (výchozí: "row"). Záhlaví sloupců z CSV vždy tvoří názvy podřízených elementů. Pokud záhlaví obsahuje mezery nebo znaky neplatné v názvech XML elementů, nástroj je automaticky sanitizuje.
Jaký je rozdíl mezi převodem CSV na XML a CSV na JSON?
Převod CSV na XML produkuje hierarchický dokument se značkami, XML deklarací a podporou validace schématu (XSD/DTD). Převod CSV na JSON produkuje lehčí pole objektů klíč-hodnota. XML použijte, pokud to vyžaduje cílový systém (SOAP API, regulované formáty, RSS kanály). JSON použijte pro REST API, JavaScriptové frontendy a NoSQL databáze.
Jak ověřím vygenerovaný XML výstup?
Vložte výstup do libovolného XML validátoru pro kontrolu správné utvořenosti (správné vnoření, správné escapování entit, odpovídající tagy). Pro validaci schématu poskytněte XSD soubor a použijte nástroj jako xmllint, Xerces nebo online XSD validátor. XML produkované tímto nástrojem je vždy správně utvořené, ale platnost schématu závisí na tom, zda struktura odpovídá vašemu cílovému schématu.
Zvládne převodník velké CSV soubory?
Nástroj běží ve vašem prohlížeči, takže výkon závisí na dostupné paměti. Soubory do několika megabajtů (desítky tisíc řádků) se na moderním hardware převádějí bez problémů. Pro velmi velké soubory (100 MB+) zvažte nástroj příkazové řádky, jako jsou moduly csv a xml.etree v Pythonu nebo balíčky encoding/csv a encoding/xml v Go, které zpracovávají data jako datový proud bez načítání všeho do paměti.
Je vygenerované XML kompatibilní s XSLT transformacemi?
Ano. Výstup je standardní správně utvořené XML s deklarací a konzistentní strukturou elementů. Můžete aplikovat libovolný XSLT stylesheet k jeho transformaci do HTML, jiného XML schématu nebo prostého textu. Předvídatelná struktura (kořenový element > element řádku > elementy polí) usnadňuje psaní XPath selektorů a XSLT šablon.