Che cosa fa questo strumento
Individua l’elemento ripetuto e trasforma ogni occorrenza in una riga.
<ordini>
<ordine id="1"><cliente>Ada</cliente><totale>42</totale></ordine>
<ordine id="2"><cliente>Alan</cliente><totale>17</totale></ordine>
</ordini>
cliente,totale,id
Ada,42,1
Alan,17,2
Gli involucri a chiave unica vengono attraversati: <ordini><ordine>… non richiede alcuna impostazione. Anche un involucro con un proprio attributo — <ordini totale="2"> — lo è: quell’attributo descrive la collezione, non una riga, e quindi non diventa una colonna. Un attributo posto su una riga, sì.
Gli attributi sono colonne
Un identificatore ospitato in un attributo è un dato come un altro. @_id diventa la colonna id.
Il prefisso resta in un solo caso: quando un elemento figlio porta già quel nome. <row id="1"><id>x</id></row> dà due colonne, id e @_id, perché sono due cose diverse e fonderle ne farebbe sparire una. Un interruttore elimina del tutto gli attributi se la tua tabella deve venire solo dagli elementi.
Una riga è una tabella
Un export di un solo record si converte come gli altri. Vale la pena dirlo perché prima non era così: XML verso JSON restituisce un oggetto e non un array quando l’elemento non è ripetuto, e pretendere l’array rifiutava un documento del tutto ordinario.
Un elemento radice che contiene soltanto testo resta rifiutato: un valore non è una tabella, e far finta del contrario non aiuterebbe nessuno.
Le righe che non si somigliano
L’intestazione è l’unione di tutto ciò che si è visto, nell’ordine di prima apparizione. La riga a cui manca una colonna riceve una cella vuota:
<r><row><a>1</a></row><row><a>2</a><b>3</b></row></r>
a,b
1,
2,3
Un export irregolare è normale. Scartare la colonna in più, o la riga che non ce l’ha, perderebbe dati per amore d’ordine.
Che cosa una cella non può contenere
Una cella porta un valore. Quando un elemento contiene un sottoalbero, quel sottoalbero viene scritto come JSON dentro la cella anziché sparso su nomi di colonna inventati. È brutto ed è onesto: nulla va perduto, e vedi esattamente che cosa c’era.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.