io costruisco Toolz.dev, e un lavoro ricorrente nel lavoro di WordPress e Laravel che svolgo è quello di inserire dati in sistemi progettati dieci o due anni fa. Molti di loro parlano ancora XML e solo XML: un feed di prodotto per un marketplace, un formato di importazione per un pacchetto contabile, un endpoint SOAP che non guarderà nient'altro. I dati arrivano quasi sempre come esportazione CSV da un foglio di calcolo, quindi il compito è trasformare righe separate da virgole piatte in un documento XML strutturato. Ho guardato che vanno storto in ogni modo possibile, dal nome di un cliente contenente una virgola divisa in due colonne, a una e commerciale in un nome aziendale che ha fatto sì che l'intero file non si analizzi. Il Convertitore CSV a XML esiste per fare quella conversione correttamente, nel browser, senza incollare un elenco di clienti in qualche server anonimo Questa guida copre ciò che comporta la conversione, perché le parti complicate sono complicate e come modellare l'output per qualunque cosa lo leggerà.
tl; dr: Un convertitore da CSV a XML legge righe separate da virgole e le scrive come un documento XML ben formato, con ogni riga che diventa un elemento e ogni cella che diventa un elemento figlio con nome o un attributo Analizza CSV per RFC 4180, quindi i campi citati contenenti virgole, virgolette o interruzioni di riga sopravvivono intatti; rileva automaticamente se il delimitatore è una virgola, un punto e virgola, una scheda o una pipe; forza i nomi delle colonne in tag XML validi; e sfugge ai caratteri significativi del markup in modo che l'output venga sempre analizzato. Viene eseguito interamente nel browser, quindi i dati nel CSV non vengono mai caricati.
Qual è la differenza tra CSV e XML?
CSV, valori separati da virgole, è un formato di testo piatto Ogni riga è un record, e all'interno di una riga ogni campo è separato da un delimitatore, di solito una virgola È compatto, ogni foglio di calcolo può esportarlo, ed è banale per un essere umano leggere Ciò che non può fare è esprimere struttura o significato Non c'è nulla in un CSV che dica cosa significa una colonna, nessun annidamento, nessun tipo; una cella che tiene true e una cella che tiene la parola true sono indistinguibili e un valore che a sua volta contiene una virgola necessita di citazioni speciali per evitare di essere letto come due campi.
XML, l'Extensible Markup Language, è il trade opposto Ogni valore è avvolto in un tag con nome, quindi <name>Ada Lovelace</name> porta sia il valore che l'etichetta per esso Che la verbosità acquista struttura: elementi nido, documenti possono essere convalidati rispetto a uno schema e un foglio di stile può trasformare il tutto Le regole per ciò che conta come XML ben formato sono stabilite nel Specifica W3C XML 1.0, e sono rigorosi in modi che CSV non è mai, che è esattamente il motivo per cui una conversione meccanica deve essere attenta Conversione CSV in XML è fondamentalmente di aggiungere la struttura e la fuga che CSV lascia implicito.
Come fa una riga a diventare un elemento?
La mappatura naturale tratta la prima riga CSV come l'intestazione, tenendo i nomi delle colonne e ogni riga successiva come un record Ogni record diventa un elemento di riga e al suo interno ogni cella diventa un elemento figlio che prende il nome dalla sua colonna Quindi un CSV di id,name,role con una riga di dati 1,Ada Lovelace,Engineer diventa:
<rows>
<row>
<id>1</id>
<name>Ada Lovelace</name>
<role>Engineer</role>
</row>
</rows>
L'esterno rows elemento è la radice del documento, perché un documento XML ben formato deve avere esattamente un elemento di primo livello che avvolge tutto il resto Il convertitore consente di rinominare sia l'elemento root che quello per riga, in modo da poter produrre <catalog><product>...</product></catalog> invece quando questo è ciò che il tuo target si aspetta I nomi delle colonne diventano i nomi dei tag, che è dove il primo vincolo reale morde, perché non ogni intestazione di colonna è un tag XML legale.
Perché alcuni nomi di colonne vengono modificati?
I nomi degli elementi XML non sono in forma libera La specifica dice che un nome deve iniziare con una lettera o un carattere di sottolineatura e può quindi contenere lettere, cifre, trattini, punti e trattini bassi, ma non spazi e non la maggior parte della punteggiatura, e potrebbe non iniziare con una colonna di foglio di calcolo chiamata First Name oppure Unit Price ($) oppure 2024 Total è una intestazione perfettamente buona e un tag XML illegale Se un convertitore emesso <First Name> il documento non sarebbe affatto analizzato.
Quindi lo strumento disinfetta ogni nome di colonna in un tag valido Spazi e caratteri illegali diventano trattini bassi, quindi First Name diventa First_Namee un nome che inizia con una cifra ottiene un prefisso di sottolineatura 2024 Total diventa _2024_Total. Se due colonne si disinfettano sullo stesso tag, o l'intestazione ripete genuinamente un nome, i duplicati ottengono un suffisso numerico quindi nessuna colonna sovrascrive silenziosamente un'altra, e lo strumento ti avvisa quando ha fatto questo La garanzia importante è che solo i nomi dei tag vengono regolati; i dati all'interno di ogni cella vengono passati attraverso intatti Se hai bisogno che le etichette originali siano conservate esattamente, la modalità attributo, coperta di seguito, è spesso più adatta perché i nomi degli attributi devono affrontare le stesse regole ma puoi anche scegliere di portare l'intestazione come valore altrove.
E le virgole e le virgolette all'interno di un valore?
Questa è la parte che rompe i convertitori ingenui, e vale la pena capirlo CSV ha una convenzione di quotazione, formalizzata in RFC 4180, per i valori che contengono il delimitatore o un'interruzione di riga Tale valore è avvolto in virgolette doppie, e qualsiasi virgoletta doppia letterale al suo interno è scritta come due virgolette doppie Quindi un campo aziendale che detiene Hopper, Grace è memorizzato nel CSV come "Hopper, Grace"e una nota che legge she said "hi" è memorizzato come "she said ""hi""".
Un convertitore che divide ogni riga su virgole maciulerà entrambe, trasformando un campo in due e lasciando virgolette vaganti ovunque Questo strumento utilizza un corretto parser stato-macchina che tiene traccia se è all'interno di un campo quotato, quindi una virgola incorporata, una virgoletta incorporata e persino una nuova riga all'interno di un valore quotato vengono tutte lette come parte del singolo campo a cui appartengono Questa è la differenza tra un cliente nominato Smith, John arrivare come uno <name> elemento e arrivo come record rotto con una colonna in più Se la tua esportazione è uscita da Excel, Fogli Google o da un dump del database, quasi certamente utilizza questo preventivo e analizzarlo correttamente non è facoltativo.
Una volta analizzato in modo sicuro, il valore deve comunque essere reso sicuro per XML, che è un problema di fuga separato. Cinque caratteri sono speciali in XML e i tre che contano nel testo dell'elemento sono la sabbia e commerciale, il segno inferiore e il segno maggiore. Una cella contenente Ben & Jerry's oppure x < y produrrebbe XML non valido se scritto letteralmente, quindi il convertitore li sostituisce con le entità predefinite &, <, e >. Nei valori degli attributi viene eseguita anche l'escape della doppia citazione. Questo escape è ciò che garantisce l'analisi dell'output indipendentemente da ciò che contengono i dati.
Ogni cella dovrebbe essere un elemento o un attributo?
XML ti dà due posti per mettere un valore: come testo di un elemento figlio, o come attributo sull'elemento riga Il convertitore supporta entrambi, e quale è quello giusto dipende interamente dal sistema che leggerà il file La modalità elemento produce la forma leggibile e annidabile:
<row>
<name>Ada</name>
</row>
La modalità Attributo fa crollare l'intera riga in un unico elemento a chiusura automatica:
<row name="Ada" role="Engineer"/>
Ecco come i due si confrontano sulle dimensioni che solitamente lo decidono:
| considerazione | Elementi bambini | attributi |
|---|---|---|
| leggibilità | Superiore, un valore per linea | Più denso, una riga per riga |
| Dimensione file | Più grande, tag ripetuti | Più piccolo |
| Può nidificare ulteriormente più tardi | certo | no |
| Valori ripetuti per colonna | Consentito | Un valore per nome attributo |
| Vestibilità tipica | Dati in stile documento, feed | Record compatti, configurazione |
Come regola generale, se i dati sono simili a record e piatti e il lettore li vuole piccoli, gli attributi vanno bene; se i dati potrebbero crescere struttura in seguito, o un essere umano lo leggerà, gli elementi sono il default più sicuro Quando non si è sicuri di cosa vuole il sistema che consuma, gli elementi sono la scelta più conservativa perché tutto ciò che accetta attributi può anche essere adattato agli elementi, ma non è sempre vero il contrario.
Come utilizzare il convertitore CSV a XML
Passaggio 1: incolla il tuo CSV
Incolla o digita il tuo CSV nella casella di input Un blocco copiato direttamente da Excel o Fogli Google funziona, così come il contenuto di un .csv file, inclusi i campi citati che contengono virgole o interruzioni di riga.
Passaggio 2: impostare le opzioni
Lascia il delimitatore su auto-rileva o scegline uno esplicitamente, conferma se la prima riga è un'intestazione, imposta i nomi degli elementi radice e riga e scegli se ogni cella diventa un elemento figlio o un attributo Puoi anche attivare/disattivare la dichiarazione XML e passare dall'output rientrato a quello minimizzato.
Passaggio 3: convertire
Fare clic su Converti in XML Lo strumento analizza ogni riga, disinfetta i nomi delle colonne in tag validi, sfugge ai caratteri di markup e assembla un documento ben formato, avvisandoti di eventuali colonne rinominate o righe irregolari.
Passaggio 4: copia o scarica
Copia l'XML negli appunti o scaricalo come a .xml file. se la forma non è del tutto adatta al sistema di destinazione, regolare i nomi degli elementi o passare dalla modalità elemento a quella attributo e convertire nuovamente.
Perché rilevare automaticamente il delimitatore?
Non ogni & quot; CSV" è separato da virgole Le esportazioni dalle località europee utilizzano frequentemente un punto e virgola, perché la virgola è il separatore decimale in quelle regioni, e i dati estratti da un database o da un registro sono spesso separati da schede Un convertitore bloccato su virgole leggerebbe un file punto e virgola come un'unica colonna ampia e produrrebbe sciocchezze Questo strumento rileva il delimitatore provando virgola, punto e virgola, scheda e pipe e selezionando qualunque produce un conteggio coerente delle colonne nelle prime diverse righe, che è un segnale molto più affidabile della frequenza grezza perché una virgola all'interno della prosa appare spesso ma in modo irregolare Puoi sempre sovrascrivere l'ipotesi quando un file è insolito, ma per i casi comuni il rilevamento significa incollare e andare.
Le righe con stracci, in cui una riga ha più o meno campi dell'intestazione, sono l'altro pasticcio del mondo reale Il convertitore adatta le righe corte con elementi vuoti e ti avverte piuttosto che rilasciare silenziosamente i dati, così puoi vedere che alla riga 47 mancavano i suoi ultimi due campi invece di scoprirla a valle I campi extra oltre l'intestazione ottengono nomi di colonne generici quindi non si perde nulla e l'avviso ti dice esattamente quante righe sono state interessate, il che di solito è sufficiente per ricondurre il problema a un delimitatore vagante nella fonte Se vuoi ispezionare un file disordinato prima di convertirlo, il Visualizzatore CSV lo rende come una tabella con lo stesso parser tollerante, che spesso è il modo più veloce per individuare un delimitatore vagante o una citazione non chiusa prima che diventi un output non valido.
Dove il convertitore da CSV a XML si adatta a tutto il resto
La conversione dei dati è raramente un singolo hop Lo stesso CSV che deve diventare XML oggi potrebbe dover diventare JSON domani per un'API REST, o un lotto di inserti SQL per un caricamento del database Il Convertitore CSV a JSON gestisce il target JSON con lo stesso parser RFC 4180 e il Convertitore CSV a SQL trasforma le stesse righe in istruzioni di inserimento Quando i dati sono già XML e devi andare dall'altra parte, il Convertitore da XML a JSON E il Convertitore da JSON a XML copri entrambe le direzioni del confine XML-JSON e utilizzano le stesse convenzioni attributo e testo seguite da questo strumento, quindi il viaggio di andata e ritorno è prevedibile.
Per il quadro più ampio, il Guida da CSV a JSON scava più a fondo nell'analisi delle stesse esportazioni disordinate, il Guida da JSON a XML spiega la mappatura degli elementi e degli attributi dal lato JSON e il Privacy dei dati negli strumenti online l'articolo spiega perché fare tutto questo nel browser è importante quando il CSV contiene nomi e indirizzi e-mail Come tutto su Toolz.dev, il convertitore funziona interamente nel tuo browser, quindi i dati che converti non lasciano mai la tua macchina.
Domande frequenti
Come faccio a convertire un file CSV in XML?
Incolla il CSV nella casella di input, conferma le impostazioni del delimitatore e dell'intestazione e fai clic su Converti in XML La prima riga viene letta come nomi delle colonne e ogni riga successiva diventa un elemento XML i cui tag figlio prendono il nome da quelle colonne. Puoi quindi copiare il risultato o scaricarlo come file 0, xml.
Cosa succede alla riga dell'intestazione CSV?
Quando & quot; prima riga è header" è acceso, le celle di intestazione diventano i nomi degli elementi XML per ogni riga di dati I nomi vengono disinfettati in tag XML validi, quindi & quot; Nome" diventa Nome_Nome e una colonna duplicata viene rinominata con un suffisso numerico Se si disattiva l'opzione di intestazione, le colonne vengono denominate colonna_1, colonna_2 e così via.
Ogni cella dovrebbe essere un elemento o un attributo?
Dipende dal sistema che legge l'XML La modalità Elemento scrive una struttura nestabile leggibile con un tag per valore, mentre la modalità attributo fa crollare una riga in un unico elemento compatto con un attributo per colonna Questo convertitore supporta entrambi, quindi scegli quello che il tuo schema o il target di importazione si aspetta; gli elementi sono l'impostazione predefinita più sicura quando non sei sicuro.
Il convertitore gestisce le virgole all'interno di un valore?
Sì. Seguendo RFC 4180, un valore che contiene una virgola, una virgoletta doppia o un'interruzione di riga è avvolto in virgolette doppie nel CSV e una virgoletta incorporata è scritta come due virgolette Il parser legge quei campi quotati come un singolo valore anziché dividerli, quindi & quot; Hopper, Grace" rimane in un elemento.
Quali delimitatori sono supportati?
virgola, punto e virgola, scheda e pipe Per impostazione predefinita lo strumento rileva automaticamente il delimitatore scegliendo quello che produce un numero consistente di colonne nelle prime diverse righe, che gestisce correttamente i file di punto e virgola europei e le esportazioni separate da schede È anche possibile selezionare manualmente il delimitatore.
Perché alcuni dei miei nomi di colonna vengono modificati nell'XML?
I nomi degli elementi XML non possono contenere spazi o la maggior parte della punteggiatura e non possono iniziare con una cifra o un trattino Il convertitore sostituisce i caratteri illegali con sottolineature e prefissa un nome che inizia con una cifra, quindi l'output è sempre ben formato I dati originali in ogni cella non vengono mai modificati, solo i nomi dei tag.
I miei dati CSV vengono caricati su un server?
No. L'intera conversione viene eseguita nel browser con JavaScript, Nulla di ciò che incolli viene trasmesso, registrato o archiviato e lo strumento continua a funzionare senza connessione di rete una volta caricata la pagina, il che mantiene privati nomi, e-mail e altri dati nel CSV.
Posso riconvertire XML in CSV o in JSON?
Questo strumento converte CSV in XML Per rimodellare i dati nell'altro modo, utilizzare il convertitore da XML a JSON e utilizzare il convertitore da CSV a JSON quando JSON anziché XML è il tuo target Tutti funzionano lato client con le stesse garanzie sulla privacy.



