XML in JSON
Convertitore online gratuito da XML a JSON basato sul DOMParser nativo del browser. Gli attributi XML sono mappati direttamente ai campi, gli elementi ripetuti sono fusi in array, il testo va nel campo value. Output JSON o YAML con prettyPrint e autoriparazione errori XML, 100% nel browser.
Raccomandazioni correlate
Informazioni su XML in JSON: converti i dati XML in oggetti JSON standard automaticamente
XML in JSON è il processo di conversione di dati in formato XML (messaggi SOAP, feed RSS, file di configurazione) in oggetti JSON. XML è il formato tradizionale per sistemi aziendali, SOAP Web Services, file di configurazione e documenti Office, mentre JSON è lo standard de facto per le API web moderne, JavaScript e database NoSQL. Ogni formato ha i suoi punti di forza: XML è rigoroso, auto-descrittivo e ampiamente compatibile con namespace e validazione di schemi; JSON è conciso, facile da analizzare e si adatta naturalmente a JavaScript. La conversione di XML in JSON per frontend moderni o microservizi è un'esigenza comune, e questo strumento automatizza quel processo.
Il nucleo dello strumento è l'utilizzo del DOMParser nativo del browser per analizzare l'XML e attraversare automaticamente l'albero DOM per produrre un oggetto JSON. DOMParser è il parser XML integrato del browser, segue lo standard W3C DOM e supporta tutte le funzionalità XML 1.0, inclusi namespace, CDATA, commenti e attributi.
Le regole di mappatura sono intuitive: ogni elemento XML diventa un oggetto JSON, gli attributi dell'elemento diventano campi dell'oggetto direttamente (senza prefisso @, evitando le convenzioni di denominazione disordinate di alcuni strumenti), il testo va nel campo value, e gli elementi fratelli ripetuti con lo stesso nome di tag sono fusi in array. Ad esempio, <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore> diventa {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}.
La scelta della mappatura diretta degli attributi senza prefisso è una decisione di design chiave. Molti strumenti di conversione XML usano @attribute, #text e altri prefissi speciali per distinguere attributi e testo. La mappatura diretta rende il JSON generato più vicino ai modelli di dati aziendali reali; gli sviluppatori possono definire tipi corrispondenti direttamente in un'interfaccia TypeScript.
L'unione di elementi ripetuti è un altro design chiave. XML non ha un concetto nativo di array, richiedendo elementi ripetuti (ad es. più <item>) per rappresentare dati di elenco. Lo strumento rileva automaticamente più elementi fratelli con lo stesso nome di tag e li fonde in array, allineandosi con la semantica di elenco di JSON ed evitando la perdita di dati o l'unione manuale.
L'output a doppio formato (JSON + YAML) è un design differenziante. YAML è un altro popolare formato di serializzazione dei dati, ampiamente utilizzato nelle configurazioni di Kubernetes, Docker Compose, Ansible e GitHub Actions. Lo strumento include un semplice convertitore YAML che supporta l'indentazione standard a 2 spazi, il prefisso di elenco - e la sintassi chiave:valore. Commuta tra JSON e YAML con un clic.
L'autoriparazione degli errori XML (tryFixXML) migliora la tolleranza ai guasti dello strumento. L'XML del mondo reale spesso manca della dichiarazione XML (<?xml version="1.0"?>) o usa tag auto-chiudenti in stile HTML (ad es. <br>) invece dello stile XML <br />. Lo strumento aggiunge automaticamente la dichiarazione XML e completa lo slash finale nei tag auto-chiudenti, consentendo al DOMParser di elaborare correttamente più XML non standard.
Il formato e la compressione XML (formatXML/compressXML) sono basati sulla libreria xml-formatter. La modalità prettyPrint genera XML con rientro a 2 spazi e leggibile; la modalità compress genera XML compatto senza spazi bianchi adatto alla trasmissione di rete. Gli sviluppatori possono utilizzare lo strumento per comprimere l'XML prima di archiviarlo in un database, risparmiando il 30-50% di spazio di archiviazione.
La conversione in tempo reale è una funzionalità pratica. Dopo l'interruzione della digitazione, lo strumento converte con un debounce di 500ms; combinato con le sei scorciatoie da tastiera (macOS ⇧⌘+F/C/T/O/D/K), gli utenti possono completare rapidamente le operazioni comuni senza clic del mouse.
L'elaborazione puramente lato client è l'architettura centrale. Tutta l'analisi XML, l'attraversamento del DOM, la serializzazione JSON e la conversione YAML vengono eseguiti in JavaScript del browser. DOMParser è fornito nativamente dal browser (non è necessario includere un parser XML), e xml-formatter è un pacchetto npm leggero (meno di 30 KB). I dati XML originali non vengono mai inviati a un server, quindi i messaggi SOAP riservati (contenenti informazioni sugli ordini, credenziali utente o risposte API aziendali) possono essere elaborati in modo sicuro in locale.
Casi d'uso
- Converti le risposte XML dei gateway di pagamento, ERP o API CRM legacy in JSON per frontend moderni o backend Node.js.
- Analizza i feed RSS / Atom in JSON per visualizzarli nei frontend web, aggregarli in lettori di feed unificati o importarli nei database.
- Leggi i file di configurazione XML delle applicazioni Java (web.xml, applicationContext.xml) e convertili in JSON per query jq o importazione in altri strumenti.
- Converti le risposte XML SOAP 1.1/1.2 in JSON e processale con librerie Node.js come jsonwebtoken o lodash.
- Analizza i file pom.xml di Maven, build.xml di Ant e script di build simili in JSON per la visualizzazione dei metadati del progetto o l'analisi delle dipendenze.
- Converti feed RSS, Sitemap XML, fonti di sottoscrizione Atom in formato JSON per l'archiviazione in database moderni come Elasticsearch o MongoDB.
- Converti i formati XML standard del settore (HL7, ISO 20022) di sanità o finanza in JSON per microservizi moderni.
- Converti i file XML relativi alla SEO (sitemap.xml, robots.xml) di Google Merchant Center o Sitemap.org in JSON per crawler o strumenti di analisi.
Come utilizzare
- Incolla il tuo XML nell'editor di sinistra, fai clic su Carica per selezionare un file .xml/.txt, o fai clic su Esempio per caricare l'esempio di libreria integrato.
- Lo strumento converte automaticamente 500ms dopo l'interruzione della digitazione. Visualizza il JSON o YAML convertito a destra con l'evidenziazione della sintassi CodeMirror.
- Fai clic sui pulsanti JSON / YAML nella barra degli strumenti di destra per cambiare il formato di output in tempo reale. Puoi anche usare i pulsanti Formatta (⇧⌘+F) o Comprimi (⇧⌘+C) per regolare il formato dell'input XML.
- Fai clic su Copia per mettere il JSON/YAML negli appunti, o fai clic su Scarica per salvarlo come file con l'estensione corretta (output.json / output.yaml / output.xml).
- Per correggere errori di sintassi XML, fai clic sul pulsante Ripara accanto al messaggio di errore. Lo strumento chiama tryFixXML per aggiungere la dichiarazione XML e completare i tag auto-chiudenti.
- Incolla il JSON nel tuo codice di destinazione (definizione di interface TypeScript, tipo di risposta API, ecc.) o importalo nel tuo servizio backend per l'ulteriore elaborazione.
Funzionalità
- Analisi DOM intelligente: analizza l'XML con il DOMParser nativo del browser e attraversa automaticamente l'albero dei nodi per produrre un oggetto JSON standard, senza dipendenze.
- Mappatura diretta degli attributi: gli attributi XML (ad es. id="1", category="fiction") diventano campi di oggetti JSON regolari senza prefisso @.
- Array di elementi ripetuti: gli elementi fratelli con lo stesso nome di tag sono fusi automaticamente in array JSON ({book: [{...}, {...}]}).
- Estrazione del nodo di testo: il contenuto testuale dell'elemento è memorizzato in un campo value.
- Output a doppio formato: commutazione con un clic tra JSON (prettyPrint a 2 spazi) e YAML (indentazione a 2 spazi, prefisso di elenco -) per diversi casi d'uso.
- Autoriparazione errori XML: tryFixXML integrato aggiunge le dichiarazioni XML mancanti e completa i tag auto-chiudenti.
- Formato e compressione XML: utilizza la libreria xml-formatter per supportare output prettyPrint e minify (indentazione a 2 spazi o senza spazi).
- Conversione automatica in tempo reale: converte 500ms dopo l'interruzione della digitazione, senza clic manuali.
- Evidenziazione dual JSON/XML: il lato sinistro utilizza l'evidenziazione della sintassi XML di CodeMirror; il lato destro commuta tra evidenziazione JSON o YAML.
- Sistema completo di scorciatoie: sei scorciatoie comuni (formattare/comprimere/convertire/caricare/scaricare/cancellare) per macOS e Windows/Linux.
- Copia e scarica: copia negli appunti con un clic, o salva come file output.json/output.yaml/output.xml standard (estensione selezionata automaticamente in base al formato).
- 100% nel browser: tutta l'analisi XML, l'attraversamento del DOM e la serializzazione JSON avvengono in JavaScript lato client; l'XML originale non lascia mai il tuo dispositivo, e il DOMParser è fornito nativamente dal browser.
Domande frequenti
Come converto un XML in formato JSON?
Incolla il tuo XML nell'editor di sinistra e lo strumento utilizza il DOMParser nativo del browser per analizzarlo, quindi attraversa automaticamente l'albero DOM per costruire un oggetto JSON standard. Il nodo radice è incapsulato in { [tagName]: {...} }, gli attributi sono mappati direttamente ai campi (senza prefisso @), il testo dell'elemento va nel campo value, e gli elementi fratelli ripetuti con lo stesso nome di tag sono fusi in un array. La conversione viene eseguita 500ms dopo l'interruzione della digitazione.
Come sono mappati gli attributi XML e i nodi di testo?
Lo strumento utilizza una mappatura intuitiva: gli attributi XML diventano campi di oggetti JSON regolari (ad es. <book id="1"> diventa {id: "1", ...} senza prefisso @), e il contenuto testuale dell'elemento va nel campo value (ad es. <title>Great Gatsby</title> diventa {value: "Great Gatsby"}). Quando un elemento ha sia attributi che testo, entrambi sono memorizzati come fratelli nello stesso oggetto.
Gli elementi XML ripetuti vengono convertiti automaticamente in array JSON?
Sì. Lo strumento rileva automaticamente più elementi fratelli con lo stesso nome di tag (ad es. tre elementi <book> sotto <bookstore>) e li fonde in un array JSON. Ad esempio, <bookstore><book>...</book><book>...</book></bookstore> diventa {bookstore: {book: [{...}, {...}]}}.
Come vengono gestiti i nodi di testo puro?
Quando un elemento XML non ha attributi e solo contenuto testuale, lo strumento restituisce il testo direttamente come stringa (ad es. <name>Alice</name> diventa "Alice"). Quando l'elemento ha sia attributi che testo, gli attributi e il testo sono memorizzati come fratelli nello stesso oggetto ({attr: "...", value: "..."}).
Lo strumento può gestire XML malformato (tag di chiusura mancanti)?
Sì. La funzione di riparazione tryFixXML integrata aggiunge automaticamente la dichiarazione XML mancante (<?xml version="1.0" encoding="UTF-8"?>) e completa lo slash finale per i tag auto-chiudenti come br, hr e img. Ciò migliora significativamente la compatibilità con sistemi legacy e API di terze parti non standard.
Quali tipi di file XML sono supportati?
Lo strumento supporta file .xml e .txt (codifica UTF-8). Fai clic sul pulsante Carica per selezionare un file locale; lo strumento lo legge tramite l'API FileReader nativa del browser senza caricarlo su un server.
Può generare sia JSON che YAML?
Sì. Lo strumento supporta l'output JSON e YAML. Fai clic sul pulsante di commutazione JSON/YAML nella barra degli strumenti di destra per cambiare formato in tempo reale. JSON viene emesso con prettyPrint a 2 spazi; YAML utilizza l'indentazione standard a 2 spazi, il prefisso di elenco - e la sintassi chiave:valore.
Qual è il nome del file scaricato?
L'estensione viene scelta automaticamente in base al formato di output attuale: output.json per JSON, output.yaml per YAML e output.xml (il formato originale) quando c'è un input ma nessuna conversione.
Quali scorciatoie da tastiera sono disponibili?
Lo strumento supporta queste scorciatoie: su macOS, ⇧⌘+F per formattare, ⇧⌘+C per comprimere, ⇧⌘+T per convertire, ⇧⌘+O per caricare, ⇧⌘+D per scaricare, ⇧⌘+K per cancellare; su Windows/Linux, usa Ctrl al posto di ⌘. Sei scorciatoie coprono il flusso di lavoro completo.
I namespace XML sono supportati?
Sì. Lo strumento utilizza DOMParser per analizzare l'XML, che supporta nativamente i namespace (xmlns). I prefissi dei namespace sono conservati come parte del nome dell'elemento nel JSON, ad es. <svg:circle> diventa {svg:circle: {...}}. Per accedere agli elementi tra namespace, identificarli tramite il prefisso del namespace nel parser JSON.
Le sezioni CDATA sono supportate?
Sì. Il contenuto delle sezioni CDATA (<![CDATA[...]]>) viene fuso automaticamente nel textContent dell'elemento dal DOMParser, e lo strumento lo estrae nel campo value come testo normale.
Quale dimensione del file di input è supportata?
Non c'è un limite rigido; il limite pratico è la memoria del browser. L'XML fino a 1-2 MB funziona senza problemi; file più grandi possono rallentare a causa del footprint di memoria più elevato di DOMParser.
Risoluzione dei problemi
Errore di analisi JSON 'unclosed token', cosa fare?
La causa è di solito tag di chiusura XML mancanti, virgolette di attributi non corrispondenti o caratteri speciali non escapeati. Fai clic sul pulsante Ripara accanto all'errore per chiamare tryFixXML, che aggiunge automaticamente la dichiarazione XML e completa i tag auto-chiudenti. Se continua a fallire, verifica manualmente la struttura XML o usa document.documentElement.outerHTML negli strumenti di sviluppo del browser.
L'ordine degli attributi in JSON non corrisponde all'XML sorgente?
Lo standard JSON non garantisce l'ordine degli attributi; lo strumento mappa gli attributi nell'ordine del codice sorgente. Se la tua attività è sensibile all'ordine, ricostruisci il JSON come array ordinato usando toPairs di lodash o strumenti simili. La maggior parte dei motori JavaScript (V8, SpiderMonkey) conserva l'ordine di inserzione delle chiavi stringa.
Un singolo elemento con lo stesso nome di tag non diventa un array, come gestirlo?
Lo strumento converte in array solo quando rileva più elementi fratelli con lo stesso nome di tag; se c'è un solo elemento, lo strumento lo mantiene come singolo oggetto. Per forzare la conversione in array (anche con un solo elemento), avvolgi con castArray di lodash dopo la conversione o applica la convalida JSON Schema per forzare gli array.
Come conservare i caratteri speciali negli attributi XML (come <, &)?
DOMParser desescapea automaticamente i valori degli attributi; lo strumento conserva il contenuto desescapeato. Se l'XML originale ha <, il valore JSON convertito è <. Questo è il comportamento standard XML. Se devi conservare la forma originale escapeata, usa una libreria xml-formatter o un tokenizer XML personalizzato al posto di DOMParser.
Perché l'output YAML non ha informazioni di tipo?
YAML supporta i tipi nativamente (12 è number, true è boolean, null è null), ma il semplice convertitore YAML dello strumento serializza tutti i valori come stringhe. Per preservare i tipi, usa una libreria YAML matura come js-yaml, o applica la convalida JSON Schema lato parser.
Come vengono gestite le istruzioni di elaborazione (PI) XML?
DOMParser preserva le istruzioni di elaborazione XML (ad es. <?xml-stylesheet ...?>) come nodi ProcessingInstruction in document.firstChild. Lo strumento attualmente attraversa solo i nodi Element, quindi le istruzioni di elaborazione vengono ignorate. Per preservarle, estrai manualmente document.firstChild.nodeValue.
Con cosa apro il file .json scaricato?
Il file output.json scaricato è un file JSON standard codificato in UTF-8. Puoi aprirlo con qualsiasi editor di testo (VS Code, Sublime, Notepad++) o strumento JSON specializzato (jq, JSDoc).
Glossario
- JSON (JavaScript Object Notation)
- Formato leggero di interscambio dati basato sulla sintassi degli oggetti JavaScript, ma indipendente da qualsiasi linguaggio di programmazione. Supporta sei tipi base: oggetto ({}), array ([]), string, number, boolean e null.
- XML (eXtensible Markup Language)
- Linguaggio di markup estensibile definito dal W3C nel 1998. Usa tag per descrivere i dati e supporta namespace, validazione di schemi e trasformazioni XSLT.
- DOMParser
- API nativa del browser (standard W3C DOM) che analizza stringhe XML o HTML in un albero DOM. Tutti i browser moderni (Chrome, Firefox, Safari, Edge) lo hanno integrato, non è necessaria alcuna libreria di terze parti.
- xml-formatter
- Libreria JavaScript leggera (meno di 30 KB) per formattare (prettyPrint) e comprimere (minify) documenti XML. Supporta opzioni personalizzate di indentazione, separatori di riga e collapseContent.
- Mappatura degli attributi
- Come gli attributi degli elementi XML vengono mappati ai campi degli oggetti JSON. Lo strumento utilizza un approccio di mappatura diretta: <book id="1"> diventa {id: "1"}, senza prefisso @.
- Unione di elementi ripetuti
- Gli elementi XML fratelli con lo stesso nome di tag (come più <item>) sono fusi automaticamente in un array JSON.
- Campo value
- Convenzione dello strumento per il contenuto testuale dell'elemento XML. Il testo va in un campo value.
- YAML (YAML Ain't Markup Language)
- Formato di serializzazione dei dati adatto all'uomo, ampiamente utilizzato nei file di configurazione di Kubernetes, Docker Compose, Ansible e GitHub Actions.
- SOAP (Simple Object Access Protocol)
- Protocollo di comunicazione dei servizi web basato su XML. I messaggi SOAP sono incapsulati in un envelope SOAP (namespace XML) e contengono un'intestazione e un corpo (payload XML).
- Feed RSS / Atom
- Formati di distribuzione di contenuti basati su XML. RSS 2.0 organizza i contenuti in una struttura <rss><channel><item>, Atom utilizza <feed><entry>.
- Namespace XML
- Meccanismo per evitare conflitti di nomi di elementi utilizzando l'attributo xmlns, nel formato xmlns:prefix="uri".
- Sezione CDATA
- Sintassi XML speciale <![CDATA[...]]> per incorporare testo con caratteri speciali (come <, >, &) senza escape.
- tryFixXML
- Funzione di riparazione XML integrata che aggiunge automaticamente le dichiarazioni XML mancanti e completa lo slash finale per i tag auto-chiudenti come br, hr e img.
- prettyPrint
- Modalità di output della libreria xml-formatter che aggiunge automaticamente rientro e interruzioni di riga per migliorare la leggibilità.
Regole di mappatura da elemento XML a campo JSON
Regole di conversione dello strumento basate su DOMParser:
| Struttura XML | Esempio XML | Output JSON | Regola di mappatura |
|---|---|---|---|
element with attrs | <book id="1" category="fiction"/> | {"id": "1", "category": "fiction"} | Attributi mappati direttamente ai campi |
element with text | <title>Great Gatsby</title> | {"value": "Great Gatsby"} | Testo nel campo value |
attrs + text | <price currency="USD">12.99</price> | {"currency": "USD", "value": "12.99"} | Attributi e testo sono fratelli |
nested elements | <book><title>Gatsby</title></book> | {"title": {"value": "Gatsby"}} | Elementi figli diventano campi |
repeated elements | <books><book/><book/></books> | {"book": [{}, {}]} | Elementi ripetuti fusi in array |
root element | <bookstore>...</bookstore> | {"bookstore": {...}} | Radice incapsulata in { [tagName]: ... } |
namespace prefix | <svg:circle/> | {"svg:circle": {...}} | DOMParser supporta i namespace |
Confronto JSON vs YAML
I due formati di output supportati dallo strumento:
| Dimensione | JSON | YAML | Note |
|---|---|---|---|
| Sintassi | { } : [ ] conciso | indentazioni + - elenchi | JSON conciso, YAML leggibile |
| Tipi di dati | number/bool/null nativi | number/bool/null nativi | Entrambi preservano i tipi |
| Indentazione | 2 spazi | 2 spazi | Lo strumento usa 2 spazi |
| Array | [1, 2, 3] | - 1\n- 2\n- 3 | JSON parentesi, YAML trattini |
| Commenti | non supportati | # commenti | YAML supporta i commenti |
| Casi d'uso | REST API, frontend-backend | K8s, Docker, CI/CD | Web usa JSON, config usa YAML |
Privacy & Security
Questo strumento di conversione da XML a JSON viene eseguito interamente nel tuo browser. L'analisi XML (basata sul DOMParser nativo del browser), l'attraversamento dell'albero DOM, la serializzazione JSON e la conversione YAML avvengono in JavaScript lato client; xml-formatter è l'unica dipendenza esterna (un pacchetto npm di meno di 30 KB). I dati XML originali non vengono mai inviati a un server. I caricamenti di file utilizzano l'API FileReader nativa del browser e non passano mai attraverso un servizio intermedio. Lo strumento non utilizza cookie di tracciamento e non raccoglie dati di input o utilizzo. Tutti gli input e output vengono cancellati dalla memoria non appena la pagina viene chiusa o ricaricata. Sicuro da usare con messaggi XML contenenti dati aziendali sensibili (informazioni sugli ordini, credenziali utente, risposte API aziendali).
Authoritative References
- Compressione JSON
- CSV in JSON
- JSON to CSV
- JSON Diff
- JSON Escape / Unescape
- Appiattimento JSON
- Formattatore JSON
- Generatore JSON
- Query JSONPath
- Unire JSON
- Riparare JSON
- Validatore di Schema JSON
- Ordinare JSON
- JSON Stringify
- JSON in HTML
- JSON in Java
- JSON to Markdown
- JSON in SQL
- JSON in TOML
- JSON in TypeScript
- XML in JSON
- JSON in XML
- YAML in JSON
- Da JSON a YAML
- JSON in Python
- JSON in Go
- JSON in Rust
- JSON in Swift
- JSON a C#
- JSON a C++
- JSON to PHP