Cos'è la conversione XML ↔ JSON?
XML (Extensible Markup Language) è un formato di testo basato su tag per dati gerarchici. Lo vedrai nei web service SOAP, nei feed RSS e Atom, nei record sanitari HL7 FHIR, nei file sitemap.xml e nei file di configurazione distribuiti con Maven, Spring e Android Gradle. JSON (JavaScript Object Notation, definito da RFC 8259) descrive lo stesso tipo di dati annidati, ma con parentesi graffe e array invece di tag di apertura e chiusura. JSON è quello che parla quasi ogni REST API oggi, ed è la forma di valore nativa di ogni runtime del browser. Convertire tra i due formati è uno di quei lavori che sembra banale finché non ti scontri con attributi, contenuto misto, figli ripetuti e CDATA. Una regex personalizzata è la risposta sbagliata; un parser reale è quella giusta. Questo strumento include un parser reale (fast-xml-parser) e lo esegue nel tuo browser, così puoi incollare un envelope XML restituito da un servizio SOAP legacy e vederlo diventare un oggetto JSON che puoi inserire direttamente in uno store Redux, oppure prendere un payload JSON che hai assemblato in un client REST e trasformarlo nella forma XML che un endpoint enterprise si aspetta ancora.
Come funziona la mappatura XML ↔ JSON?
Ogni conversione viene eseguita localmente nel tuo browser usando la libreria fast-xml-parser in bundle (MIT, versione 4.x). Le regole di mappatura di alto livello sono:
- Elemento in chiave: ogni nome di elemento XML diventa una chiave dell'oggetto JSON.
<user><name>Alice</name></user>si mappa in{"user":{"name":"Alice"}}. - Attributo in chiave prefissata: un attributo viene memorizzato sotto una chiave formata anteponendo il prefisso scelto. Con prefisso
@,<user id="1">produce{"user":{"@id":"1"}}. - Contenuto testuale in chiave nodo testo: quando un elemento ha sia attributi sia testo, il testo finisce sotto la chiave nodo testo scelta.
<price currency="USD">9.99</price>con chiave#textproduce{"price":{"@currency":"USD","#text":"9.99"}}. - Figli ripetuti in array: quando Forza array per tag figli ripetuti è attivo, più elementi fratelli con lo stesso nome vengono compressi in un array JSON.
<items><item>A</item><item>B</item></items>diventa{"items":{"item":["A","B"]}}. - Sezioni CDATA: il testo grezzo all'interno di
<![CDATA[…]]>viene preservato sotto la chiave#cdatain modo che le parentesi angolari e le e commerciali non vengano ri-escapate durante il round-trip. - Da JSON a XML inverte la mappatura: le chiavi degli oggetti diventano elementi, le chiavi prefissate diventano attributi e gli array si espandono in elementi fratelli ripetuti.
Perché convertire XML e JSON con questo strumento?
- I tuoi dati rimangono sulla tua macchina. Ogni analisi e ogni costruzione viene eseguita nel contesto JavaScript di questa pagina. Bundle FHIR di pazienti, envelope SOAP di autenticazione, file di configurazione proprietari, esportazioni di fatturazione — nulla tocca i nostri server, perché non c'è nessun passaggio di upload nel codice. Apri il pannello di rete e guarda.
- SOAP legacy in un front-end REST-first è la richiesta più comune che riceviamo. Una banca o un assicuratore espone un endpoint SOAP che non verrà dismesso per anni; l'app React o Vue che lo chiama non vuole imparare XML. Incolla l'envelope, ottieni il JSON con attributi prefissati e namespace preservati, inserisci i contenuti del
Bodynel tuo state store. - Anche i consumatori RSS, Atom e sitemap ne beneficiano. Una directory di podcast, un aggregatore di notizie o una dashboard interna che consuma
sitemap.xmlpuò evitare di scrivere completamente un parser XML. Converti il feed una volta, lavora con l'array JSON e il tuo codice client rimane nel linguaggio che già parla. - L'esportazione della configurazione completa il quadro. Maven, Spring, Android Gradle e i vecchi build Ant emettono tutti XML; gli strumenti cloud-native dall'altra parte (Terraform, Ansible, GitHub Actions, cloud-init) leggono JSON o YAML. Converti nel browser invece di eseguire uno script Python con una dipendenza di terze parti, particolarmente utile in ambienti air-gapped dove incollare in un servizio web sconosciuto non è un'opzione.
Quali sono le applicazioni comuni della conversione XML ↔ JSON?
Il collegamento di XML e JSON compare nell'ingegneria dell'integrazione, negli strumenti API e nell'ingegneria dei dati. Alcuni pattern dominano il carico di lavoro:
- Bridging da SOAP a REST: estrarre il payload
Bodyda un envelope SOAP restituito da un'API bancaria o assicurativa legacy e convertirlo in JSON in modo che un front-end React o Vue possa consumarlo senza un livello proxy lato server. - Record sanitari FHIR: convertire i bundle XML HL7 FHIR (il formato richiesto da HHS/ONC e NHS Digital per lo scambio di dati clinici) in JSON per il caricamento in una raccolta MongoDB Atlas o in una colonna JSONB PostgreSQL dove gli analisti possono interrogarli.
- Elaborazione di sitemap e feed: trasformare un
sitemap.xmlo un feed RSS/Atom in un array JSON in modo che un indicizzatore personalizzato, un bot Slack o un widget dashboard possa iterare le voci senza includere un parser XML come dipendenza.
Come appare un round-trip XML ↔ JSON?
Prendi un piccolo esempio. Incolla <user id="1"><name>Alice</name></user> nell'input, imposta il prefisso degli attributi su @, lascia la modalità su XML in JSON e premi Converti. L'output è {"user":{"@id":"1","name":"Alice"}}. Cambia la modalità in JSON in XML, incolla di nuovo quel JSON, imposta l'indentazione a 2 spazi e premi di nuovo Converti. Otterrai <user id="1">\n <name>Alice</name>\n</user>, strutturalmente identico all'originale. L'unica cosa non garantita nel round-trip è l'ordine degli attributi, perché le chiavi degli oggetti JSON non sono ordinate per specifica.
Questo convertitore XML ↔ JSON include fast-xml-parser@4 in bundle alla stessa origine, gestisce attributi, CDATA, tag figli ripetuti e prefissi di namespace, e continua a funzionare offline una volta caricata la pagina. Nessun passaggio di upload, nessun proxy CDN, nessun beacon di analytics, nessuna telemetria di alcun tipo. Ogni byte di input e output rimane nel tuo browser, che è esattamente quello che vuoi quando il payload è un bundle FHIR di pazienti, un envelope SOAP di autenticazione o qualsiasi altra forma di dati che nessuno fuori dal tuo team dovrebbe mai vedere.