Convertitore gratuito da XML a CSV
Converti dati XML in formato CSV con rilevamento automatico.
Come usare
- Incolla o digita i tuoi dati XML nell'area di sinistra.
- Lo strumento rileva automaticamente gli elementi che si ripetono e appiattisce le strutture annidate.
- Visualizza l'anteprima dei tuoi dati a destra. Clicca su Scarica il CSV per salvare il file convertito.
Domande frequenti
Come vengono gestiti gli elementi annidati?
Gli elementi annidati sono appiattiti con la notazione a punti. Per esempio, «person.address.city» diventa una singola intestazione di colonna.
E se gli elementi hanno un numero di figli diverso?
I valori mancanti vengono lasciati vuoti nell'output CSV. Tutte le intestazioni di colonna sono preservate anche se alcune righe non hanno certi valori.
Come rileva lo strumento gli elementi che si ripetono?
Lo strumento identifica automaticamente il tipo di elemento più frequente nel tuo XML e lo usa come fonte di righe.
Perché la conversione da XML a CSV è così frequente
XML è verboso e gerarchico; CSV è piatto e denso. Una grande quantità di dati reali utili vive in XML: sitemap.xml, feed RSS/Atom, file di esportazione WordPress, configurazioni Apple plist, elenchi di dipendenze Maven pom.xml, tracce GPS (GPX), segnaposto Google Earth (KML), formati per estratti conto bancari (CAMT.053, MT940 in forma XML), feed di prodotti e-commerce, dati sanitari in HL7 v3, report finanziari in XBRL, spartiti musicali in MusicXML; quasi nessuno di essi può essere analizzato senza prima essere appiattito in righe. Excel, Google Sheets, SQL LOAD DATA, Pandas, R, Tableau, Power BI consumano tutti CSV immediatamente; portare il proprio XML in uno di questi strumenti richiede una conversione preliminare.
La discrepanza fondamentale
XML ammette annidamenti arbitrari; CSV è bidimensionale. Non esiste una mappatura universale senza perdite da XML→CSV. Ogni convertitore deve fare assunzioni su quale livello dell'albero rappresenta le «righe» e su come gestire l'annidamento più profondo. Le due forme comuni:
- Formato a record ripetuti (il caso facile). Un elemento radice contenente molti figli, ciascuno con la stessa struttura.
<catalog><book>…</book><book>…</book></catalog>. Ogni<book>diventa una riga; i suoi elementi foglia diventano colonne. È questo che il convertitore cerca e gestisce in modo pulito. - Formato a documento con contenuto misto. Testo scorrevole con markup incorporato, come XHTML o DocBook. Non esiste una mappatura CSV pulita per questo caso: di solito viene serializzato come singola cella stringa o rifiutato.
Lo strumento rileva automaticamente l'elemento ripetuto trovando il figlio diretto più frequente della radice, il che è corretto per circa il 90% dei feed XML reali. Se il proprio XML non si adatta a questo pattern, è necessario pre-elaborarlo con un rapido script XPath o modificarlo manualmente per portarlo a una forma a record ripetuti.
Feed XML che si convertono bene
- sitemap.xml: ogni voce
<url>diventa una riga con le colonneloc,lastmod,changefreq,priority. Utile per audit SEO e inventari di contenuti. - Feed RSS/Atom: ogni
<item>o<entry>diventa una riga. Utile per l'analisi del content marketing o per migrare su una piattaforma diversa. - XML di esportazione WordPress (WXR): tag
<item>per post, pagine e allegati. Comune durante la migrazione a Substack, Ghost o generatori di siti statici. - GPX (GPS Exchange Format): i trackpoint
<trkpt>conlat,lon,ele,timediventano righe. Utile per l'analisi dei percorsi. - KML (Google Earth): voci
<Placemark>con nomi, descrizioni e coordinate. - iTunes/plist XML di Apple in forma a record ripetuti: voci di playlist, metadati delle app.
- XML per estratti conto OFX/QFX/CAMT: le transazioni diventano righe per importazioni contabili.
- Feed di catalogo prodotti: molte piattaforme e-commerce forniscono feed XML con elementi ripetuti
<product>per le sottomissioni CSE.
Come vengono gestiti attributi, annidamento e figli ripetuti
- Gli attributi come
<book id="42">vengono appiattiti in colonne. Il convertitore usa il nome dell'attributo direttamente come intestazione di colonna (id) quando non è ambiguo. - Gli elementi annidati vengono appiattiti con notazione a punti:
<person><address><street>Main</street><city>NYC</city></address></person>produce le colonneaddress.streeteaddress.city. È la stessa convenzione che usajson_normalizedi Pandas per i JSON annidati. - Gli elementi figlio ripetuti come
<tags><tag>a</tag><tag>b</tag></tags>possono essere problematici: non esiste una rappresentazione piatta ovvia. È necessario pre-elaborare se si ha bisogno di output con una colonna per tag o una riga per tag. - I cinque riferimenti ad entità predefinite (
&,<,>,',") vengono de-escaped durante la conversione, quindiTom & Jerryin XML diventaTom & Jerrynella cella CSV. - Le sezioni CDATA vengono aperte: il contenuto diventa il valore della cella così com'è.
- Commenti e istruzioni di elaborazione vengono eliminati; CSV non ha un equivalente.
Codifica: la trappola di Excel
L'XML dichiara la propria codifica tramite <?xml version="1.0" encoding="UTF-8"?>. CSV non ha dichiarazione di codifica; il programma di apertura la intuisce. Excel su Windows utilizza per impostazione predefinita Windows-1252, quindi aprire un CSV in UTF-8 senza un Byte Order Mark mostra mojibake (é diventa é, ü diventa ü). La soluzione: salvare il CSV con un BOM UTF-8 () all'inizio, usare la procedura guidata di Excel Dati → Da testo/CSV e selezionare esplicitamente UTF-8, oppure aprire il file in Google Sheets, che gestisce correttamente l'UTF-8 senza BOM.
Scelta del delimitatore
Per RFC 4180, il delimitatore CSV canonico è la virgola. Lo strumento supporta anche punto e virgola, tabulazione e pipe; scegliere quello più adatto al proprio pubblico:
- Virgola: predefinita. Excel la legge quando le impostazioni regionali del sistema operativo sono in inglese. Sicura per la maggior parte dei casi d'uso.
- Punto e virgola: preferito nell'Europa continentale e in America Latina, dove la virgola è il separatore decimale. Excel usa il separatore di elenco del sistema operativo, quindi un Excel con impostazioni locali francesi o tedesche produce CSV delimitato da punto e virgola.
- Tabulazione: utile quando i campi contengono virgole (indirizzi, testo libero). Comune nei dati scientifici.
- Pipe: ricorre a un delimitatore raro in qualsiasi dato naturale. Usato in alcuni sistemi aziendali legacy dove i dati possono contenere virgole, punto e virgola e tabulazioni.
Per RFC 4180, i campi che contengono il delimitatore scelto, interruzioni di riga o virgolette doppie vengono automaticamente racchiusi tra virgolette doppie; le virgolette doppie incorporate vengono escaped raddoppiandole. Le stesse regole di quotatura si applicano indipendentemente dal delimitatore scelto.
Privacy
I payload XML contengono spesso informazioni riservate: transazioni di estratti conto bancari, dati interni dei dipendenti, sitemap estratte che rivelano URL interni, cartelle cliniche, cataloghi prodotti coperti da NDA. Il DOMParser integrato nel browser viene eseguito interamente nella scheda, senza richieste di rete, senza roundtrip al server, senza voci di log. I dati passano dagli appunti a un albero analizzato in memoria, vengono percorsi una volta per l'appiattimento e il risultato finisce nella textarea di output. Se non si fa clic su Scarica, nulla viene scritto su disco.
Errori comuni
- Incollare XML che non ha forma a record ripetuti. Un documento come un singolo file di configurazione senza ripetizioni non si appiattirà in un CSV utilizzabile. Il convertitore è progettato per XML di tipo «lista di elementi simili».
- Aspettarsi che i prefissi degli attributi vengano preservati.
<product id="42">diventa una colonna chiamataid, nonproduct@idoproduct.id. Se si reimporta il CSV altrove come XML, sarà necessario rimappare. - Delimitatore sbagliato per il pubblico. Un CSV con virgola aperto in un'installazione francese di Excel può collassare in una singola colonna. Abbinare il delimitatore al destinatario del file.
- Dimenticare il BOM UTF-8 per Excel. I caratteri non latini appaiono corrotti in Excel su Windows senza il BOM. Aggiungere il BOM oppure aprire il file in Google Sheets o Excel per il web.
- Tentare di convertire XHTML o DocBook. L'XML a documento con contenuto misto non si appiattisce in modo pulito; per quei casi usare una pipeline XML/XSLT appropriata, non un convertitore tabulare.
- Rischio preesistente di CSV injection nei valori dei campi. Se l'XML contiene testo generato dagli utenti e si intende aprire l'output in Excel o Sheets, le celle che iniziano con
=,+,-o@vengono interpretate come formule. OWASP documenta questo come una vera classe di attacchi; sanificare prima di condividere esportazioni di contenuti generati dagli utenti. - Elementi figlio ripetuti. Se l'XML ha wrapper
<tags>con più figli<tag>, l'output piatto non può rappresentarli in modo pulito. È possibile appiattire su una riga per tag (con i campi del genitore ripetuti) oppure pre-elaborare l'XML per inlineare i tag come stringa delimitata.
Altre domande frequenti
Lo strumento validerà il mio XML rispetto a uno schema?
No. Verifica solo la correttezza della struttura (well-formedness), tramite il DOMParser integrato nel browser. Per la validazione XSD o RELAX NG, usare uno strumento dedicato come xmllint, Saxon o il validatore XML Schema del W3C; la well-formedness è sufficiente per un appiattimento sicuro in CSV.
Quanto può essere grande il mio XML?
Quanto ne può contenere il browser. Non c'è un limite lato server perché non c'è alcun server coinvolto. Decine di megabyte vengono convertiti in uno o due secondi su un dispositivo moderno. Se si hanno centinaia di megabyte di XML, è opportuno suddividerli in batch prima della conversione; far elaborare tutto a una singola scheda del browser può incontrare limiti di memoria.
Lo strumento gestisce i namespace XML?
Sì, gli elementi con namespace come <atom:link> vengono riconosciuti e il prefisso viene preservato nel nome della colonna. Se non si desidera il prefisso nelle intestazioni CSV, eseguire un rapido trova e sostituisci sull'output per rimuoverli.
Il mio XML viene caricato da qualche parte?
No. Tutta l'analisi e l'appiattimento avvengono nel browser tramite il DOMParser integrato. Il contenuto della textarea non viene mai trasmesso, registrato o memorizzato. Quando la scheda viene chiusa, i dati sono persi.
Qual è la differenza tra questo strumento e il convertitore da JSON a CSV?
Stesso obiettivo (appiattire dati gerarchici in righe) ma formati di input diversi. XML è più verboso, ammette attributi, ha namespace e usa riferimenti ad entità per i caratteri speciali. Il convertitore da XML a CSV gestisce specificamente queste caratteristiche; il convertitore da JSON a CSV si aspetta un input array-di-oggetti. Se si ha JSON, usare quello strumento; se si ha XML, questo fornirà un risultato più pulito.
È possibile ottenere la conversione inversa (da CSV a XML)?
Non con questo strumento, ma la conversione inversa è generalmente più semplice: scegliere un nome per l'elemento riga, avvolgere ogni riga e convertire ogni colonna in un elemento figlio. Un piccolo script Python o Node con csv e xml.etree gestisce questo in 20 righe. In alternativa, usare uno strumento per dati strutturati come Power Query di Excel, che può esportare CSV in XML con uno schema scelto.