Convertitore da XML a JSON
Incolla il tuo XML qui sotto e ottieni JSON all'istante — analizzato con il DOMParser nativo del browser, non con uno scanner scritto a mano, così l'annidamento, le virgolette e le entità vengono gestiti esattamente come farebbe un vero analizzatore XML. Nulla di ciò che incolli esce mai dal tuo browser.
Converti XML in JSON con il vero analizzatore del browser
DOMParser costruisce un vero albero DOM a partire dal
tuo XML — lo stesso albero che il browser costruirebbe per un
documento reale — e questo strumento lo percorre ricorsivamente
invece di scansionare il testo grezzo alla ricerca di tag. Un
elemento con solo contenuto testuale (nessun elemento figlio)
diventa una semplice stringa. Un elemento con elementi figli
diventa un oggetto indicizzato per nome di tag figlio. Gli
attributi finiscono sotto una chiave "@attributes" così non vengono mai confusi con gli
elementi figli. E quando più figli condividono un nome di tag —
fratelli <item>, voci di elenco, righe
ripetute — si raggruppano in un array invece di sovrascriversi
silenziosamente, perché gli elementi ripetuti sono la norma
nell'XML del mondo reale, non l'eccezione.
Esempio pratico
Input: <person id="42"><name>Ada Lovelace</name><tag>math</tag><tag>computing</tag></person>
(85 caratteri: un attributo e tre elementi figli, due dei quali
condividono il tag tag). La conversione produce:
{
"@attributes": {
"id": "42"
},
"name": "Ada Lovelace",
"tag": [
"math",
"computing"
]
}
— 111 caratteri. Nota che tag è diventato un array
di due elementi, non semplicemente "computing" che
sovrascrive "math". Ora prova con <a><b></a> — il tag <b> non
chiuso rende questo XML non valido, e invece di un output vuoto
o un errore confuso, questo strumento mostra un messaggio in
linguaggio semplice che ti dice di controllare i tag, perché
DOMParser non lancia un errore con XML scorretto — restituisce
un documento contenente un elemento <parsererror>, e questo strumento controlla
esattamente questo. Vuoi costruire XML ben formato fin
dall'inizio? Il Convertitore da JSON a XML
gestisce la direzione inversa.
Domande frequenti
Cosa succede quando più elementi condividono lo stesso nome di tag?
Si raggruppano in un array JSON invece di sovrascriversi a vicenda. Il primo <item> diventa un valore e, nel momento in cui compare un secondo <item> fratello, quella chiave viene convertita in un array e entrambi i valori vengono aggiunti — così tre fratelli <item> diventano un array di tre elementi, non solo l'ultimo. Questo è l'errore più comune nella conversione manuale da XML a JSON, ed è per questo che controlliamo se la chiave esiste già su ogni elemento invece di assumere che ogni nome di tag compaia una sola volta.
Dove finiscono gli attributi XML nel JSON?
Sotto una chiave "@attributes" dell'oggetto di quell'elemento, così non vengono mai confusi con gli elementi figli — <price currency="USD">19.99</price> diventa {"@attributes":{"currency":"USD"},"#text":"19.99"}. Un elemento con attributi ma senza figli né testo ottiene solo la chiave "@attributes" e nient'altro.
Cosa succede se il mio XML non è valido?
DOMParser non lancia un errore JavaScript con XML malformato — restituisce invece silenziosamente un documento contenente un elemento <parsererror>, facile da non notare se non lo si controlla. Questo strumento controlla esattamente questo e mostra un messaggio in linguaggio semplice invece di una casella vuota o un errore confuso.
Il mio XML viene caricato da qualche parte?
No. L'analisi avviene con il DOMParser nativo del browser, e il JSON viene costruito con JSON.stringify — entrambi funzionano interamente nel tuo browser. Nulla di ciò che incolli viene inviato, salvato o registrato. Questo vale per ogni strumento di questo sito.
Questo gestisce i namespace XML o le sezioni CDATA?
Le sezioni CDATA vengono gestite correttamente perché DOMParser le risolve allo stesso modo di qualsiasi analizzatore XML: il loro contenuto diventa semplicemente parte del testo dell'elemento, indistinguibile dal testo normale, esattamente come prevede la specifica XML per una sezione CDATA. Gli elementi con namespace mantengono il loro nome di tag con prefisso (come ns:tag) come chiave JSON, quindi nulla viene scartato in silenzio — questo strumento non esegue una risoluzione dei namespace separata oltre a questo.