Vai allo strumento
ViewCSV
Nessun caricamento del file

Convertire un CSV in XML

orders.csv· DATI DI ESEMPIO15 righe · 8 colonne
Valori come
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>Ginevra Marino</customer>
    <city>Bologna</city>
    <product>Chair, ergonomic</product>
    <quantity>6</quantity>
    <unit_price>199.84</unit_price>
    <order_date>2026-01-21</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>Leonardo Bianchi</customer>
    <city>Milano</city>
    <product>Coffee beans 1kg</product>
    <quantity>9</quantity>
    <unit_price>162.74</unit_price>
    <order_date>2026-02-03</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Leonardo Esposito</customer>
    <city>Milano</city>
    <product>Desk lamp</product>
    <quantity>2</quantity>
    <unit_price>85.91</unit_price>
    <order_date>2026-03-19</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>Aurora Bianchi</customer>
    <city>Genova</city>
    <product>USB-C cable</product>
    <quantity>6</quantity>
    <unit_price>24.82</unit_price>
    <order_date>2026-04-17</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>Andrea Greco</customer>
    <city>Torino</city>
    <product>Desk lamp</product>
    <quantity>1</quantity>
    <unit_price/>
    <order_date>2026-05-05</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>Ginevra Bianchi</customer>
    <city>Torino</city>
    <product>Monitor 27"</product>
    <quantity>8</quantity>
    <unit_price>166.92</unit_price>
    <order_date>2026-06-21</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> Ginevra Esposito </customer>
    <city>Torino</city>
    <product>Desk lamp</product>
    <quantity>6</quantity>
    <unit_price>35.24</unit_price>
    <order_date>2026-07-17</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>Giulia Ferrari</customer>
    <city>Milano</city>
    <product>USB-C cable</product>
    <quantity>1</quantity>
    <unit_price>141.91</unit_price>
    <order_date>2026-08-12</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>Aurora Ricci</customer>
    <city>Firenze</city>
    <product>Notebook A5</product>
    <quantity>2</quantity>
    <unit_price>108.07</unit_price>
    <order_date>2026-09-02</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>Francesco Gallo</customer>
    <city>Roma</city>
    <product>USB-C cable</product>
    <quantity>6</quantity>
    <unit_price>215.56</unit_price>
    <order_date>2026-01-15</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>Alice Rossi</customer>
    <city>Genova</city>
    <product>Notebook A5</product>
    <quantity>5</quantity>
    <unit_price>126.30</unit_price>
    <order_date>2026-02-19</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>Aurora Romano</customer>
    <city>Torino</city>
    <product>Coffee beans 1kg</product>
    <quantity>8</quantity>
    <unit_price>149.92</unit_price>
    <order_date>2026-03-18</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>Francesco Gallo</customer>
    <city>Torino</city>
    <product>Coffee beans 1kg</product>
    <quantity>1</quantity>
    <unit_price>164.32</unit_price>
    <order_date>2026-04-10</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>Giulia Ferrari</customer>
    <city>Napoli</city>
    <product>Chair, ergonomic</product>
    <quantity>8</quantity>
    <unit_price>30.59</unit_price>
    <order_date>2026-05-14</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Leonardo Esposito</customer>
    <city>Milano</city>
    <product>Desk lamp</product>
    <quantity>2</quantity>
    <unit_price>85.91</unit_price>
    <order_date>2026-03-19</order_date>
    <status>shipped</status>
  </row>
</rows>

15 righe · 1 file

Apri o incolla un file CSV e ottieni un XML ben formato: un elemento radice, un elemento riga per ogni record e ogni valore come elemento figlio o come attributo. Le intestazioni che non sono nomi XML validi, come Order ID o 2024 total, vengono rinominate e ogni modifica viene elencata. Il file viene convertito nel browser e non viene mai caricato.

Come convertire un CSV in XML

  1. Scegli Apri file, trascina sullo strumento un file .csv, .tsv o .txt oppure usa Incolla. Se le colonne non sembrano giuste, controlla delimitatore e codifica in Impostazioni di importazione.
  2. Assegna all’Elemento radice e all’Elemento riga (per impostazione predefinita rows e row) i nomi che si aspetta il sistema che riceverà il file.
  3. Scegli Valori come, la gestione dei valori vuoti, il Rientro e la dichiarazione, poi seleziona Copia o «Scarica XML».

Se il sistema che legge il file richiede nomi di tag precisi, rinomina prima le colonne del CSV con Mappa colonne CSV: così non serve alcuna ridenominazione automatica.

A cosa serve ogni opzione

Elementi figliÈ l’impostazione predefinita: <row><Customer>Smith &amp; Sons</Customer>…</row>. Mantiene gli a capo nei valori ed è adatta alla maggior parte degli strumenti di importazione.
AttributiUn elemento a chiusura automatica per riga: <row Customer="Smith &amp; Sons" …/>. È compatto; tabulazioni e a capo nei valori vengono scritti come &#9;, &#10; e &#13;, così un parser li conserva.
Ometti i valori vuotiDisattivata per impostazione predefinita: una cella vuota diventa un elemento vuoto come <Ship_date/>. Se la attivi, l’elemento o l’attributo non compare in quella riga.
Rientro2 spazi (predefinito), 4 spazi oppure Nessuno (minificato), che scrive l’intero documento su una sola riga.
Aggiungi la dichiarazione XMLAttiva per impostazione predefinita: la prima riga è <?xml version="1.0" encoding="UTF-8"?>. Disattivala quando l’XML verrà inserito in un altro documento.

I nomi della radice e della riga seguono le stesse regole delle intestazioni: un valore vuoto o non valido torna a rows o row, oppure riceve un trattino basso come prefisso.

Come i nomi di colonna diventano nomi XML

  • Gli spazi diventano _, e così ogni carattere diverso da lettere, cifre, ., - e _: Total (EUR) → Total__EUR_, e-mail:work → e-mail_work. Anche i due punti vengono sostituiti, quindi non nasce nessun prefisso di namespace.
  • Un nome che inizia con una cifra, . o - riceve un trattino basso iniziale (2024 total → _2024_total); lo stesso vale per un nome che inizia con xml, maiuscolo o minuscolo, perché XML lo riserva (xml_ref → _xml_ref).
  • Se due intestazioni finiscono con lo stesso nome, la seconda riceve _2 (a b e a_b → a_b, a_b_2). I nomi XML distinguono maiuscole e minuscole, quindi Name e name restano distinti.
  • Le lettere di qualsiasi alfabeto vengono mantenute: Größe e 価格 sono nomi XML validi. Un’intestazione vuota diventa prima Column 7, poi Column_7.
  • Ogni ridenominazione compare sotto le opzioni nella forma old → new, e un avviso sopra l’anteprima ne indica il numero.

Come vengono scritti i valori

  • Nel testo degli elementi vengono protetti &, < e >; negli attributi anche ". Per il resto i valori vengono scritti esattamente come nel CSV: 00731 conserva i suoi zeri e nessun tipo viene dedotto.
  • XML 1.0 vieta la maggior parte dei caratteri di controllo (U+0000–U+001F tranne tabulazione, line feed e ritorno a capo), U+FFFE, U+FFFF e i surrogati spaiati, anche se protetti. Vengono rimossi e viene indicato il numero di valori interessati.
  • Virgole, virgolette e a capo tra virgolette vengono letti secondo la RFC 4180; dentro un elemento figlio un a capo resta un vero a capo.
  • L’output è sempre in UTF-8.

Risoluzione dei problemi

  • Lo strumento di importazione non trova un campo. Probabilmente è stato rinominato. Controlla l’elenco sotto le opzioni e rinomina la colonna nel CSV, oppure adatta la mappatura nel sistema che riceve il file.
  • Un parser segnala un errore di codifica. Apri il file di origine con la sua vera codifica in Impostazioni di importazione: l’XML è in UTF-8 corretto solo se il CSV è stato decodificato bene.
  • È tutto in un solo elemento. Il delimitatore è stato riconosciuto male: in Impostazioni di importazione scegli Virgola, Punto e virgola, Tabulazione o Barra verticale. I CSV salvati da Excel in italiano usano spesso il punto e virgola.
  • Mi servono CDATA, namespace o uno schema. Il convertitore scrive solo elementi e attributi semplici; aggiungi queste parti in un passaggio successivo.

Limiti e privacy

I file fino a 25 MB, 100.000 righe o 2 milioni di celle si aprono con un’anteprima dal vivo delle prime 200 righe. Quelli più grandi vengono convertiti in streaming: il file viene letto due volte a blocchi (una per misurare le colonne, una per scrivere), un avviso ricorda che il download comprende l’intero file e Copia non è disponibile. Un singolo file di output può arrivare al massimo a 4 GB.

La conversione gira in un worker in background in questa scheda del browser: la pagina resta reattiva e Annulla la interrompe. Il CSV non viene mai inviato a un server.

Esempio

Un export di ordini con spazi e parentesi nelle intestazioni, una e commerciale, parentesi angolari e una data vuota, convertito con le impostazioni predefinite. Tre intestazioni vengono rinominate; la Ship date vuota diventa <Ship_date/>.

CSV
Order ID,Customer,Total (EUR),Ship date
10071,"Smith & Sons",249.00,2025-02-03
10072,"Café <Lumière>",18.50,
XML
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <Order_ID>10071</Order_ID>
    <Customer>Smith &amp; Sons</Customer>
    <Total__EUR_>249.00</Total__EUR_>
    <Ship_date>2025-02-03</Ship_date>
  </row>
  <row>
    <Order_ID>10072</Order_ID>
    <Customer>Café &lt;Lumière&gt;</Customer>
    <Total__EUR_>18.50</Total__EUR_>
    <Ship_date/>
  </row>
</rows>

Domande frequenti

Perché il nome della mia colonna è cambiato?

I nomi degli elementi XML non possono contenere spazi né la maggior parte dei segni di punteggiatura, e non possono iniziare con una cifra o con xml. Il convertitore applica la modifica più piccola che produce un nome valido e univoco, e le elenca tutte.

Meglio elementi o attributi?

Usa gli elementi figli, a meno che il sistema di destinazione non chieda attributi. Gli elementi mantengono gli a capo come sono scritti; nei valori degli attributi i parser XML normalizzano gli spazi, ed è per questo che il convertitore codifica tabulazioni e a capo come riferimenti a caratteri.

Numeri e date ricevono un tipo?

No. XML non ha tipi di valore integrati, quindi ogni valore viene scritto con il testo del CSV. I tipi li stabilisce lo schema o il programma che legge il file.

Standard e riferimenti