ToolDeck

Convertitore da CSV a XML

Converti dati CSV nel formato XML

Prova un esempio

Input CSV

Output XML

Esegue in locale · Sicuro per incollare segreti
L'output XML apparirà qui…

Cos'è la conversione da CSV a XML?

La conversione da CSV a XML trasforma valori separati da virgola in documenti XML (Extensible Markup Language). Ogni riga del CSV diventa un elemento XML, e ogni intestazione di colonna viene mappata come nome di tag figlio. Il risultato è un documento gerarchico e autodescrittivo che i sistemi possono validare rispetto a uno schema (XSD o DTD) ed elaborare con gli strumenti XML standard come XSLT, XPath e i parser SAX/DOM.

XML è uno standard di interscambio dati dal 1998, quando il W3C pubblicò la specifica XML 1.0. Sebbene JSON abbia sostituito XML in molte API web, XML rimane il formato richiesto per i web service SOAP, i feed RSS/Atom, la grafica SVG, i documenti Office Open XML (.docx, .xlsx), i file di risorse Android, le configurazioni di build Maven/Gradle, e settori regolamentati come sanità (HL7 CDA), finanza (FpML, XBRL) e pubblica amministrazione (NIEM). Quando i dati sorgente sono un foglio di calcolo o un export da database, la conversione da CSV a XML è il modo per portarli in questi sistemi.

Un corretto convertitore da CSV a XML deve gestire i casi limite dell'RFC 4180: campi tra virgolette che contengono virgole o interruzioni di riga, virgolette doppie precedute da escape, e delimitatori variabili. Sul lato XML, deve fare l'escape delle cinque entità XML predefinite (& < > " '), generare nomi di elemento validi dalle intestazioni (sostituendo spazi e caratteri speciali), e produrre output ben formato con una corretta dichiarazione XML e codifica coerente.

Perché usare un convertitore da CSV a XML?

Scrivere XML a mano a partire da dati di un foglio di calcolo è lento e soggetto a errori. Un tag di chiusura mancante o un ampersand non preceduto da escape produce XML non valido che blocca i parser a valle. Questo convertitore gestisce parsing, escape e generazione degli elementi in un unico passaggio.

Conversione immediata nel browser
Incolla il CSV e ottieni output XML ben formato con una dichiarazione corretta, un elemento radice e elementi figlio annidati. Nessun tool da riga di comando o installazione di librerie necessaria.
🔒
Dati sempre privati
Tutta la conversione avviene localmente nel browser tramite JavaScript. I dati CSV non vengono mai caricati su un server, né registrati, né memorizzati al di fuori del tuo dispositivo.
🎯
Genera XML valido e ben formato
L'output fa l'escape delle entità XML, sanitizza i nomi delle intestazioni in tag elemento validi e produce markup correttamente annidato che supera qualsiasi validatore o linter XML.
📋
Gestisce qualsiasi dialetto CSV
Rileva automaticamente virgola, punto e virgola, tabulazione e pipe come delimitatori. Supporta le regole di quotatura RFC 4180, incluse le virgolette doppie precedute da escape, i campi multilinea e i file UTF-8 con BOM.

Casi d'uso della conversione da CSV a XML

Integrazione con SOAP e API legacy
Molti sistemi enterprise usano ancora web service SOAP che richiedono body XML nelle richieste. Converti un export CSV in payload XML che corrispondano allo schema WSDL del servizio prima di inviare le richieste.
Generazione di file di configurazione
Genera liste di dipendenze Maven pom.xml, file di risorse Android o definizioni di bean Spring a partire da un foglio di calcolo di dipendenze, stringhe o voci di configurazione. Produci in batch configurazioni XML da un'unica sorgente CSV.
ETL nelle pipeline di dati
Alimenta export CSV da database o strumenti di analytics in pipeline ETL basate su XML. Strumenti come Apache NiFi, Talend e SSIS accettano input XML per workflow di trasformazione che richiedono la validazione dello schema ad ogni fase.
Reportistica normativa e di conformità
Settori come sanità (HL7 CDA), finanza (XBRL, FpML) e pubblica amministrazione (NIEM) impongono invii in formato XML. Converti i dati di conformità tabulari nella struttura XML richiesta prima della trasmissione.
Generazione di feed RSS e Atom
Trasforma un elenco CSV di articoli, titoli e date in un feed RSS 2.0 o Atom. I workflow di gestione dei contenuti spesso partono da un foglio di calcolo di post che devono essere pubblicati come feed di syndication.
Insegnamento dei fondamenti XML
Gli studenti che imparano XML possono incollare dati CSV familiari e osservare la gerarchia di elementi risultante, l'annidamento e l'escape delle entità. Confrontare input e output rende concreti concetti astratti come la corretta formazione e la validità.

Riferimento alla mappatura da CSV a XML

Capire come ogni parte di un file CSV si mappa sulla struttura XML aiuta a prevedere il formato dell'output e a preparare i dati prima della conversione.

Concetto CSVEquivalente XMLDettagli
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 è un formato piatto basato su delimitatori, senza schema né tipi di dato incorporati. XML è un linguaggio di markup gerarchico e autodescrittivo che supporta schemi, namespace e annidamento complesso. La scelta tra i due dipende dai requisiti del sistema a valle.

CSV
Testo semplice, un record per riga. Nessun tipo di dato: ogni valore è una stringa. Nessuna gerarchia o annidamento. Dimensione minima dei file. Supportato universalmente da fogli di calcolo, database e linguaggi di scripting. Definito dall'RFC 4180. Ideale per il trasferimento di dati tabulari semplici tra sistemi che condividono la stessa struttura a colonne.
XML
Markup gerarchico con tag di apertura e chiusura. Supporta attributi, namespace, contenuto misto e sezioni CDATA. Può essere validato rispetto a schemi XSD o DTD. Elaborato da XSLT, XPath, SAX e parser DOM. Dimensione dei file maggiore rispetto a CSV per l'overhead dei tag. Richiesto da API SOAP, Office Open XML, RSS/Atom e molti settori regolamentati.

Esempi di codice

Di seguito sono riportati esempi funzionanti di conversione da CSV a XML in diversi linguaggi. Ogni esempio analizza la riga di intestazione del CSV come nomi di tag elemento, racchiude ogni riga di dati in un elemento contenitore ed esegue l'escape delle entità XML nel contenuto delle celle.

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

Domande frequenti

Come funziona la conversione da CSV a XML?
Il convertitore legge la prima riga del CSV come intestazioni di colonna. Ogni riga successiva diventa un elemento XML, e ogni valore di cella è racchiuso in un elemento figlio il cui nome corrisponde all'intestazione della colonna. Il risultato è un documento XML ben formato con un elemento radice contenente un elemento figlio per ogni riga di dati.
Cosa succede ai caratteri speciali come & e < nei dati CSV?
Il convertitore esegue l'escape di tutte e cinque le entità XML predefinite: &amp; diventa &amp;amp;, &lt; diventa &amp;lt;, &gt; diventa &amp;gt;, &quot; diventa &amp;quot;, e &apos; diventa &amp;apos;. Questo produce XML valido che non bloccherà i parser né causerà errori di formazione.
Posso usare nomi di tag personalizzati per gli elementi radice e riga?
Sì. Lo strumento consente di impostare il nome dell'elemento radice (predefinito: "data") e il nome dell'elemento riga (predefinito: "row"). Le intestazioni di colonna del CSV diventano sempre i nomi degli elementi figlio. Se un'intestazione contiene spazi o caratteri non validi nei nomi degli elementi XML, lo strumento li sanitizza automaticamente.
Qual è la differenza tra la conversione da CSV a XML e da CSV a JSON?
La conversione da CSV a XML produce un documento di markup gerarchico con tag di apertura/chiusura, una dichiarazione XML e supporto per la validazione dello schema (XSD/DTD). La conversione da CSV a JSON produce un array più leggero di oggetti chiave-valore. Usa XML quando il sistema di destinazione lo richiede (API SOAP, formati regolamentati, feed RSS). Usa JSON per API REST, frontend JavaScript e database NoSQL.
Come posso validare l'output XML generato?
Incolla l'output in qualsiasi validatore XML per verificare la corretta formazione (annidamento corretto, escape delle entità, tag corrispondenti). Per la validazione dello schema, fornisci un file XSD e usa uno strumento come xmllint, Xerces o un validatore XSD online. L'XML prodotto da questo strumento è sempre ben formato, ma la validità rispetto a uno schema dipende dal fatto che la struttura corrisponda allo schema di destinazione.
Il convertitore gestisce file CSV di grandi dimensioni?
Lo strumento opera nel browser, quindi le prestazioni dipendono dalla memoria disponibile. File fino a qualche megabyte (decine di migliaia di righe) si convertono senza problemi su hardware moderno. Per file molto grandi (100 MB+), considera uno strumento da riga di comando come i moduli csv e xml.etree di Python o i pacchetti encoding/csv e encoding/xml di Go, che elaborano i dati in streaming senza caricare tutto in memoria.
L'XML generato è compatibile con le trasformazioni XSLT?
Sì. L'output è XML standard ben formato con una dichiarazione e una struttura di elementi coerente. Puoi applicare qualsiasi foglio di stile XSLT per trasformarlo in HTML, un altro schema XML o testo semplice. La struttura prevedibile (radice > riga > elementi campo) rende semplice scrivere selettori XPath e template XSLT.