ToolDeck

Konwerter CSV na XML

Konwertuj dane CSV do formatu XML

Wypróbuj przykład

Dane CSV

Wynik XML

Działa lokalnie · Bezpieczne do wklejania sekretów
Wynik XML pojawi się tutaj…

Czym jest konwersja CSV na XML?

Konwersja CSV na XML przekształca wartości rozdzielone przecinkami w dokumenty w formacie Extensible Markup Language (XML). Każdy wiersz CSV staje się elementem XML, a każdy nagłówek kolumny mapuje się na nazwę tagu elementu podrzędnego. Wynikiem jest hierarchiczny, samoopisujący dokument, który systemy mogą walidować względem schematu (XSD lub DTD) i przetwarzać za pomocą standardowych narzędzi XML, takich jak XSLT, XPath oraz parsery SAX/DOM.

XML jest standardem wymiany danych od 1998 roku, gdy W3C opublikowało specyfikację XML 1.0. Choć JSON zastąpił XML w wielu webowych API, XML pozostaje wymaganym formatem dla usług sieciowych SOAP, kanałów RSS/Atom, grafiki SVG, dokumentów Office Open XML (.docx, .xlsx), plików zasobów Android, konfiguracji budowania Maven/Gradle oraz regulowanych branż, takich jak ochrona zdrowia (HL7 CDA), finanse (FpML, XBRL) i administracja rządowa (NIEM). Gdy dane źródłowe to arkusz kalkulacyjny lub eksport bazy danych, konwersja CSV na XML umożliwia ich integrację z tymi systemami.

Poprawny konwerter CSV na XML musi obsługiwać przypadki brzegowe RFC 4180: pola w cudzysłowach zawierające przecinki lub znaki nowej linii, cudzysłowy ucieczki oraz różne separatory. Po stronie XML musi zastępować pięć predefiniowanych encji XML (& < > " '), generować prawidłowe nazwy elementów z nagłówków (zamieniając spacje i znaki specjalne) oraz produkować poprawnie sformułowany wynik z właściwą deklaracją XML i spójnym kodowaniem.

Dlaczego warto używać konwertera CSV na XML?

Ręczne pisanie XML z danych arkusza kalkulacyjnego jest powolne i podatne na błędy. Brakujący tag zamykający lub niezastąpiony znak ampersand produkuje nieprawidłowy XML, który psuje parsery downstream. Ten konwerter obsługuje parsowanie, zastępowanie encji i generowanie elementów w jednym kroku.

Natychmiastowa konwersja w przeglądarce
Wklej CSV i otrzymaj poprawnie sformułowany wynik XML z właściwą deklaracją, elementem głównym i zagnieżdżonymi elementami podrzędnymi. Nie potrzebujesz narzędzi wiersza poleceń ani instalowania bibliotek.
🔒
Dane pozostają prywatne
Cała konwersja odbywa się lokalnie w przeglądarce z użyciem JavaScript. Twoje dane CSV nigdy nie są przesyłane na serwer, rejestrowane ani przechowywane poza Twoim urządzeniem.
🎯
Generuje prawidłowy, poprawnie sformułowany XML
Wynik zastępuje encje XML, oczyszcza nazwy nagłówków do prawidłowych tagów elementów i produkuje poprawnie zagnieżdżony kod, który przejdzie każdy walidator lub linter XML.
📋
Obsługuje dowolny dialekt CSV
Automatycznie wykrywa przecinki, średniki, tabulatory i kreski pionowe jako separatory. Obsługuje zasady cytowania RFC 4180, w tym cudzysłowy ucieczki, pola wieloliniowe i pliki UTF-8 z BOM.

Przypadki użycia konwersji CSV na XML

Integracja z SOAP i starszymi API
Wiele systemów korporacyjnych nadal używa usług sieciowych SOAP, które wymagają treści żądań w formacie XML. Przekonwertuj eksport danych CSV na ładunki XML zgodne ze schematem WSDL usługi przed wysłaniem żądań.
Generowanie plików konfiguracyjnych budowania
Generuj listy zależności Maven pom.xml, pliki zasobów Android lub definicje Spring Bean z arkusza kalkulacyjnego zawierającego zależności, ciągi znaków lub wpisy konfiguracyjne. Masowo twórz konfiguracje XML z jednego źródła CSV.
ETL w potokach danych
Przekazuj eksporty CSV z baz danych lub narzędzi analitycznych do potoków ETL opartych na XML. Narzędzia takie jak Apache NiFi, Talend i SSIS przyjmują dane wejściowe XML do przepływów transformacji wymagających walidacji schematu na każdym etapie.
Raportowanie regulacyjne i zgodność
Branże takie jak ochrona zdrowia (HL7 CDA), finanse (XBRL, FpML) i administracja rządowa (NIEM) wymagają zgłoszeń w formacie XML. Przekonwertuj tabelaryczne dane zgodności na wymaganą strukturę XML przed złożeniem.
Generowanie kanałów RSS i Atom
Zamień listę artykułów, tytułów i dat w formacie CSV w kanał RSS 2.0 lub Atom. Przepływy pracy zarządzania treścią często zaczynają się od arkusza kalkulacyjnego z wpisami, które należy opublikować jako kanał syndykacji.
Nauka podstaw XML
Studenci uczący się XML mogą wkleić znane dane CSV i zobaczyć powstałą hierarchię elementów, zagnieżdżanie i zastępowanie encji. Porównanie danych wejściowych i wyjściowych sprawia, że abstrakcyjne pojęcia, takie jak poprawność sformułowania i walidność, stają się konkretne.

Dokumentacja mapowania CSV na XML

Zrozumienie, jak każda część pliku CSV mapuje się na strukturę XML, pomaga przewidzieć format wyjściowy i dostosować dane przed konwersją.

Pojęcie CSVOdpowiednik XMLSzczegóły
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 a XML

CSV to płaski format oparty na separatorach, bez wbudowanego schematu ani typów danych. XML to hierarchiczny, samoopisujący język znaczników obsługujący schematy, przestrzenie nazw i złożone zagnieżdżanie. Wybór między nimi zależy od wymagań systemu docelowego.

CSV
Zwykły tekst, jeden rekord na wiersz. Brak typów danych: każda wartość jest ciągiem znaków. Brak hierarchii ani zagnieżdżania. Minimalny rozmiar pliku. Powszechnie obsługiwany przez arkusze kalkulacyjne, bazy danych i języki skryptowe. Zdefiniowany przez RFC 4180. Najlepszy do prostego transferu danych tabelarycznych między systemami, które obie strony rozumieją pod względem układu kolumn.
XML
Hierarchiczny kod znacznikowy z tagami otwierającymi i zamykającymi. Obsługuje atrybuty, przestrzenie nazw, treść mieszaną i sekcje CDATA. Może być walidowany względem schematów XSD lub DTD. Przetwarzany przez XSLT, XPath, SAX i parsery DOM. Większy rozmiar pliku niż CSV ze względu na narzut tagów. Wymagany przez API SOAP, Office Open XML, RSS/Atom i wiele regulowanych branż.

Przykłady kodu

Poniżej znajdują się działające przykłady konwersji CSV na XML w różnych językach. Każdy przykład parsuje wiersz nagłówka CSV jako nazwy tagów elementów, owija każdy wiersz danych w element kontenera i zastępuje encje XML w treści komórek.

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

Najczęściej zadawane pytania

Jak działa konwersja CSV na XML?
Konwerter odczytuje pierwszy wiersz CSV jako nagłówki kolumn. Każdy kolejny wiersz staje się elementem XML, a wartość każdej komórki jest owijana w element podrzędny nazwany zgodnie z nagłówkiem kolumny. Wynikiem jest poprawnie sformułowany dokument XML z elementem głównym zawierającym jeden element podrzędny na każdy wiersz danych.
Co dzieje się ze znakami specjalnymi takimi jak & i < w moich danych CSV?
Konwerter zastępuje wszystkie pięć predefiniowanych encji XML: & staje się &amp;amp;, < staje się &amp;lt;, > staje się &amp;gt;, " staje się &amp;quot;, a ' staje się &amp;apos;. Producuje to prawidłowy XML, który nie przerwie parserów ani nie spowoduje błędów poprawności sformułowania.
Czy mogę używać własnych nazw tagów dla elementów głównego i wiersza?
Tak. Narzędzie pozwala ustawić nazwę elementu głównego (domyślnie: "data") oraz nazwę elementu wiersza (domyślnie: "row"). Nagłówki kolumn z CSV zawsze stają się nazwami elementów podrzędnych. Jeśli nagłówek zawiera spacje lub znaki nieprawidłowe w nazwach elementów XML, narzędzie automatycznie je oczyszcza.
Jaka jest różnica między CSV na XML a CSV na JSON?
CSV na XML produkuje hierarchiczny dokument z tagami otwierającymi i zamykającymi, deklaracją XML oraz obsługą walidacji schematu (XSD/DTD). CSV na JSON produkuje lżejszą tablicę obiektów klucz-wartość. Używaj XML, gdy wymaga tego system docelowy (API SOAP, regulowane formaty, kanały RSS). Używaj JSON dla REST API, frontendów JavaScript i baz danych NoSQL.
Jak zwalidować wygenerowany wynik XML?
Wklej wynik do dowolnego walidatora XML, aby sprawdzić poprawność sformułowania (prawidłowe zagnieżdżanie, właściwe zastępowanie encji, pasujące tagi). Aby przeprowadzić walidację schematu, dostarcz plik XSD i użyj narzędzia takiego jak xmllint, Xerces lub walidatora XSD online. XML produkowany przez to narzędzie jest zawsze poprawnie sformułowany, ale walidność schematu zależy od tego, czy struktura pasuje do docelowego schematu.
Czy konwerter obsługuje duże pliki CSV?
Narzędzie działa w przeglądarce, więc wydajność zależy od dostępnej pamięci. Pliki do kilku megabajtów (dziesiątki tysięcy wierszy) konwertują się bez problemów na nowoczesnym sprzęcie. W przypadku bardzo dużych plików (100 MB+) rozważ narzędzie wiersza poleceń, takie jak moduły csv i xml.etree w Pythonie lub pakiety encoding/csv i encoding/xml w Go, które przetwarzają dane strumieniowo bez wczytywania wszystkiego do pamięci.
Czy wygenerowany XML jest zgodny z transformacjami XSLT?
Tak. Wynik to standardowy, poprawnie sformułowany XML z deklaracją i spójną strukturą elementów. Możesz zastosować dowolny arkusz stylów XSLT, aby przekształcić go w HTML, inny schemat XML lub zwykły tekst. Przewidywalna struktura (element główny > wiersz > elementy pól) ułatwia pisanie selektorów XPath i szablonów XSLT.