Conversione da XML a JSON

Converte in JSON i dati in formato XML. Permette di esaminare interamente nel navigatore il contenuto delle risposte delle vecchie interfacce XML, delle integrazioni SOAP e dei flussi RSS e Atom, con la convenzione che riporta gli attributi in @attributes, il testo in #text e gli elementi ripetuti in vettori.

Consigli per l'uso

  • Gli elementi dotati di attributi li raccolgono in un oggetto sotto la chiave `@attributes`, distinto dal testo e dagli elementi figli.
  • Negli elementi in cui attributi, elementi figli e testo convivono, la parte testuale è collocata nella chiave `#text`: non c'è quindi rischio di scambiarla con il valore di un attributo.
  • Quando più elementi fratelli portano lo stesso nome, sono automaticamente raccolti in un vettore: tre elementi `` danno un vettore di tre elementi, uno solo resta un oggetto singolo.
  • Un elemento vuoto, privo di attributi, testo ed elementi figli — per esempio `` — è convertito nel valore nullo.
  • I prefissi degli spazi dei nomi non sono separati: il nome dell'elemento resta nella forma `ns:tag` e si usa così come chiave.

Domande frequenti

Gli attributi di ciascun elemento sono raccolti in un oggetto sotto la chiave `@attributes`. Per esempio `` diventa `{"@attributes": {"category": "fiction"}, ...}`: essendo collocati altrove rispetto al valore proprio dell'elemento, cioè al testo e agli elementi figli, non c'è possibilità di confusione.

Quando sotto lo stesso genitore compaiono più elementi fratelli omonimi, essi sono raccolti automaticamente in un vettore. Se per esempio ci sono due marcatori ``, il valore della chiave `book` nell'elemento genitore sarà un vettore di due elementi. Se ce n'è uno solo, resta un oggetto singolo.

Le più frequenti sono un marcatore di chiusura dimenticato o una corrispondenza sfasata, per esempio la chiusura con un nome diverso da quello di apertura. Inoltre, poiché un documento XML deve avere un solo elemento radice, dà errore anche l'incollatura di più elementi al livello superiore, come `......`.

Questo strumento opera in un solo verso, da XML a JSON. Per formattare il JSON in sé o per formattare e convalidare l'XML, usate gli altri strumenti del sito, come il formattatore JSON e quello XML.

Il prefisso non è separato e il nome resta nella forma `ns:tag`, usata come chiave. Poiché non si risolve lo spazio dei nomi, cioè non si abbina il prefisso al suo identificativo, negli XML che ne fanno un uso complesso la struttura risultante può non essere quella desiderata.
Tool-kun

A proposito — perché fra XML e JSON non esiste un'unica risposta giusta

Fra XML e JSON non esiste una convenzione di conversione assoluta, a differenza della semplice corrispondenza fra righe e oggetti che lega CSV e JSON. Nell'XML possono convivere tre generi di informazione — attributi, nodi di testo ed elementi figli — mentre il JSON dispone della sola corrispondenza fra chiave e valore: occorre dunque stabilire di volta in volta qualche accordo. Come rappresentare gli attributi, che cosa privilegiare quando testo ed elementi figli convivono: su questi punti le principali realizzazioni hanno adottato convenzioni diverse.

Ciò nonostante le occasioni di trattare XML non mancano. Le interfacce web di tipo SOAP, le integrazioni di antica data fra sistemi finanziari, amministrativi e sanitari, i flussi RSS e Atom, i file di disposizione delle applicazioni Android: sono molti gli ambiti in cui XML è tuttora il formato standard. Resta perciò forte l'esigenza di portare i dati ricavati da questi meccanismi datati nelle moderne catene di strumenti pensate per il JSON, dall'elaborazione con jq alla manipolazione degli oggetti in JavaScript.

La convenzione qui adottata, fondata su `@attributes` e `#text`, non si spinge fino alle notazioni più fitte di simboli e sceglie una forma semplice, di uso comune nella pratica. Gli elementi foglia privi di attributi conservano il testo come valore diretto, il che rende maneggevole il JSON nei casi ordinari — un valore di configurazione, il titolo di una notizia — mentre soltanto gli elementi con attributi sono distinti in modo esplicito: guardando il risultato si capisce dunque a colpo d'occhio da quale valore originario provenga ciascuna parte.