DataSwap Convertitori di file e dati veloci, senza registrazione

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.