XML para JSON
Conversor online gratuito de XML para JSON baseado no DOMParser nativo do navegador. Os atributos XML são mapeados diretamente para campos, os elementos repetidos são mesclados em arrays, o texto vai para o campo value. Saída JSON ou YAML com prettyPrint e autorreparo de erros XML, 100% no navegador.
Sugestões Relacionadas
Sobre XML para JSON: converta dados XML em objetos JSON padrão automaticamente
XML para JSON é o processo de converter dados em formato XML (mensagens SOAP, feeds RSS, arquivos de configuração) em objetos JSON. XML é o formato tradicional para sistemas empresariais, SOAP Web Services, arquivos de configuração e documentos Office, enquanto JSON é o padrão de fato para APIs web modernas, JavaScript e bancos de dados NoSQL. Cada formato tem seus pontos fortes: XML é rigoroso, autodescritivo e amplamente compatível com namespaces e validação de esquemas; JSON é conciso, fácil de analisar e se adapta naturalmente a JavaScript. A conversão de XML para JSON para frontends modernos ou microsserviços é uma necessidade comum, e esta ferramenta automatiza esse processo.
O núcleo da ferramenta é o uso do DOMParser nativo do navegador para analisar o XML e percorrer automaticamente a árvore DOM para produzir um objeto JSON. DOMParser é o analisador XML integrado do navegador, segue o padrão W3C DOM e suporta todos os recursos do XML 1.0, incluindo namespaces, CDATA, comentários e atributos.
As regras de mapeamento são intuitivas: cada elemento XML se torna um objeto JSON, atributos do elemento se tornam campos de objeto diretamente (sem prefixo @, evitando as convenções de nomenclatura confusas de algumas ferramentas), o texto vai para o campo value, e elementos irmãos repetidos com o mesmo nome de tag são mesclados em arrays. Por exemplo, <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore> se torna {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}.
A escolha do mapeamento direto de atributos sem prefixo é uma decisão de design chave. Muitas ferramentas de conversão XML usam @attribute, #text e outros prefixos especiais para distinguir atributos de texto. O mapeamento direto torna o JSON gerado mais próximo dos modelos de dados comerciais reais; os desenvolvedores podem definir tipos correspondentes diretamente em uma interface TypeScript.
A fusão de elementos repetidos é outro design chave. XML não tem um conceito nativo de array, exigindo elementos repetidos (por exemplo, vários <item>) para representar dados de lista. A ferramenta detecta automaticamente vários elementos irmãos com o mesmo nome de tag e os mescla em arrays, alinhando-se com a semântica de lista do JSON e evitando perda de dados ou fusão manual.
O formato de saída duplo (JSON + YAML) é um design diferenciador. YAML é outro formato popular de serialização de dados, amplamente utilizado em configurações de Kubernetes, Docker Compose, Ansible e GitHub Actions. A ferramenta inclui um conversor YAML simples que suporta indentação padrão de 2 espaços, prefixo de lista - e sintaxe chave:valor. Alterne entre JSON e YAML com um clique.
O autorreparo de erros XML (tryFixXML) melhora a tolerância a falhas da ferramenta. A entrada XML do mundo real frequentemente carece da declaração XML (<?xml version="1.0"?>) ou usa tags auto-fechadas no estilo HTML (por exemplo, <br>) em vez do estilo XML <br />. A ferramenta adiciona automaticamente a declaração XML e completa a barra final nas tags auto-fechadas, permitindo que o DOMParser processe corretamente mais XML não padronizado.
A formatação e compressão XML (formatXML/compressXML) são baseadas na biblioteca xml-formatter. O modo prettyPrint gera XML com indentação de 2 espaços e legível; o modo compress gera XML compacto sem espaços em branco adequado para transmissão de rede. Os desenvolvedores podem usar a ferramenta para comprimir XML antes de armazenar em um banco de dados, economizando 30-50% de espaço de armazenamento.
A conversão em tempo real é um recurso prático. Após você parar de digitar, a ferramenta converte com um debounce de 500ms; combinada com os seis atalhos de teclado (macOS ⇧⌘+F/C/T/O/D/K), os usuários podem concluir rapidamente operações comuns sem cliques do mouse.
O processamento puramente do lado do cliente é a arquitetura central. Toda a análise XML, travessia do DOM, serialização JSON e conversão YAML são executadas em JavaScript do navegador. DOMParser é fornecido nativamente pelo navegador (não há necessidade de agrupar um analisador XML), e xml-formatter é um pacote npm leve (menos de 30 KB). Os dados XML originais nunca são enviados a um servidor, portanto mensagens SOAP confidenciais (contendo informações de pedidos, credenciais de usuário ou respostas de API empresariais) podem ser processadas com segurança localmente.
Casos de uso
- Converta respostas XML de gateways de pagamento, ERP ou APIs legadas de CRM em JSON para frontends modernos ou backends Node.js.
- Analise feeds RSS / Atom em JSON para exibir em frontends web, agregar em leitores de feeds unificados ou importar para bancos de dados.
- Leia arquivos de configuração XML de aplicações Java (web.xml, applicationContext.xml) e converta-os em JSON para consultas jq ou importação em outras ferramentas.
- Converta respostas XML SOAP 1.1/1.2 em JSON e processe-as com bibliotecas Node.js como jsonwebtoken ou lodash.
- Analise arquivos pom.xml do Maven, build.xml do Ant e scripts de build similares em JSON para visualização de metadados do projeto ou análise de dependências.
- Converta feeds RSS, Sitemap XML, fontes de assinatura Atom em formato JSON para armazenamento em bancos de dados modernos como Elasticsearch ou MongoDB.
- Converta formatos XML padrão do setor (HL7, ISO 20022) de saúde ou finanças em JSON para microsserviços modernos.
- Converta arquivos XML relacionados a SEO (sitemap.xml, robots.xml) do Google Merchant Center ou Sitemap.org em JSON para rastreadores ou ferramentas de análise.
Como Usar
- Cole seu XML no editor esquerdo, clique em Upload para selecionar um arquivo .xml/.txt, ou clique em Amostra para carregar o exemplo de livraria integrado.
- A ferramenta converte automaticamente 500ms após você parar de digitar. Visualize o JSON ou YAML convertido à direita com realce de sintaxe CodeMirror.
- Clique nos botões JSON / YAML na barra de ferramentas direita para mudar o formato de saída em tempo real. Você também pode usar os botões Formatar (⇧⌘+F) ou Comprimir (⇧⌘+C) para ajustar o formato da entrada XML.
- Clique em Copiar para colocar o JSON/YAML na área de transferência, ou clique em Baixar para salvá-lo como arquivo com a extensão correta (output.json / output.yaml / output.xml).
- Para corrigir erros de sintaxe XML, clique no botão Reparar próximo à mensagem de erro. A ferramenta chama tryFixXML para adicionar a declaração XML e completar tags auto-fechadas.
- Cole o JSON no seu código de destino (definição de interface TypeScript, tipo de resposta de API, etc.) ou importe-o para o seu serviço backend para processamento posterior.
Recursos
- Análise DOM inteligente: analisa o XML com o DOMParser nativo do navegador e percorre automaticamente a árvore de nós para produzir um objeto JSON padrão, sem dependências.
- Mapeamento direto de atributos: atributos XML (por exemplo, id="1", category="fiction") se tornam campos de objeto JSON regulares sem prefixo @.
- Arrays de elementos repetidos: elementos irmãos com o mesmo nome de tag são mesclados automaticamente em arrays JSON ({book: [{...}, {...}]}).
- Extração de nó de texto: o conteúdo de texto do elemento é armazenado em um campo value.
- Saída de formato duplo: alternância com um clique entre JSON (prettyPrint de 2 espaços) e YAML (indentação de 2 espaços, prefixo de lista -) para diferentes casos de uso.
- Autorreparo de erros XML: tryFixXML integrado adiciona declarações XML ausentes e completa tags auto-fechadas.
- Formato e compressão XML: usa a biblioteca xml-formatter para suportar saída prettyPrint e minify (indentação de 2 espaços ou sem espaços).
- Conversão automática em tempo real: converte 500ms após você parar de digitar, sem cliques manuais.
- Realce duplo JSON/XML: o lado esquerdo usa o realce de sintaxe XML do CodeMirror; o lado direito alterna entre realce JSON ou YAML.
- Sistema completo de atalhos: seis atalhos comuns (formatar/comprimir/converter/upload/download/limpar) para macOS e Windows/Linux.
- Copiar e baixar: copie para a área de transferência com um clique, ou baixe como arquivo output.json/output.yaml/output.xml padrão (extensão selecionada automaticamente pelo formato).
- 100% no navegador: toda a análise XML, travessia do DOM e serialização JSON acontecem em JavaScript do lado do cliente; o XML original nunca sai do seu dispositivo, e o DOMParser é fornecido nativamente pelo navegador.
Perguntas frequentes
Como converto XML em formato JSON?
Cole seu XML no editor esquerdo e a ferramenta usa o DOMParser nativo do navegador para analisá-lo e percorre automaticamente a árvore DOM para construir um objeto JSON padrão. O nó raiz é encapsulado em { [tagName]: {...} }, atributos são mapeados diretamente para campos (sem prefixo @), o texto do elemento vai para o campo value, e elementos irmãos repetidos com o mesmo nome de tag são mesclados em um array. A conversão é executada 500ms após você parar de digitar.
Como os atributos XML e os nós de texto são mapeados?
A ferramenta usa um mapeamento intuitivo: atributos XML se tornam campos de objeto JSON regulares (por exemplo, <book id="1"> se torna {id: "1", ...} sem prefixo @), e o conteúdo de texto do elemento vai para o campo value (por exemplo, <title>Great Gatsby</title> se torna {value: "Great Gatsby"}). Quando um elemento tem tanto atributos quanto texto, ambos são armazenados como irmãos no mesmo objeto.
Elementos XML repetidos são convertidos automaticamente em arrays JSON?
Sim. A ferramenta detecta automaticamente vários elementos irmãos com o mesmo nome de tag (por exemplo, três elementos <book> sob <bookstore>) e os mescla em um array JSON. Por exemplo, <bookstore><book>...</book><book>...</book></bookstore> se torna {bookstore: {book: [{...}, {...}]}}.
Como os nós de texto puro são tratados?
Quando um elemento XML não tem atributos e apenas conteúdo de texto, a ferramenta retorna o texto diretamente como uma string (por exemplo, <name>Alice</name> se torna "Alice"). Quando o elemento tem tanto atributos quanto texto, os atributos e o texto são armazenados como irmãos no mesmo objeto ({attr: "...", value: "..."}).
A ferramenta pode manipular XML malformado (tags de fechamento ausentes)?
Sim. A função de reparo tryFixXML integrada adiciona automaticamente a declaração XML ausente (<?xml version="1.0" encoding="UTF-8"?>) e completa a barra final para tags auto-fechadas como br, hr e img. Isso melhora significativamente a compatibilidade com sistemas legados e APIs de terceiros não padronizadas.
Quais tipos de arquivo XML são suportados?
A ferramenta suporta arquivos .xml e .txt (codificação UTF-8). Clique no botão Upload para selecionar um arquivo local; a ferramenta o lê por meio da API FileReader nativa do navegador sem carregá-lo para um servidor.
Pode gerar tanto JSON quanto YAML?
Sim. A ferramenta suporta saída JSON e YAML. Clique no botão de alternância JSON/YAML na barra de ferramentas direita para mudar o formato em tempo real. JSON é gerado com prettyPrint de 2 espaços; YAML usa indentação padrão de 2 espaços, prefixo de lista - e sintaxe chave:valor.
Qual é o nome do arquivo baixado?
A extensão é escolhida automaticamente com base no formato de saída atual: output.json para JSON, output.yaml para YAML e output.xml (o formato original) quando há entrada mas nenhuma conversão.
Quais atalhos de teclado estão disponíveis?
A ferramenta suporta estes atalhos: no macOS, ⇧⌘+F para formatar, ⇧⌘+C para comprimir, ⇧⌘+T para converter, ⇧⌘+O para upload, ⇧⌘+D para download, ⇧⌘+K para limpar; no Windows/Linux, use Ctrl em vez de ⌘. Seis atalhos cobrem o fluxo de trabalho completo.
Os namespaces XML são suportados?
Sim. A ferramenta usa DOMParser para analisar o XML, que suporta nativamente namespaces (xmlns). Os prefixos de namespace são preservados como parte do nome do elemento no JSON, por exemplo, <svg:circle> se torna {svg:circle: {...}}. Para acessar elementos entre namespaces, identifique-os pelo prefixo de namespace no parser JSON.
As seções CDATA são suportadas?
Sim. O conteúdo das seções CDATA (<![CDATA[...]]>) é mesclado automaticamente no textContent do elemento pelo DOMParser, e a ferramenta o extrai no campo value como texto normal.
Qual tamanho de arquivo de entrada é suportado?
Não há limite rígido; o limite prático é a memória do navegador. XML de até 1-2 MB funciona sem problemas; arquivos maiores podem ficar mais lentos devido à maior pegada de memória do DOMParser.
Solução de Problemas
Erro de análise JSON 'unclosed token', o que fazer?
A causa geralmente são tags de fechamento XML ausentes, aspas de atributos incompatíveis ou caracteres especiais sem escape. Clique no botão Reparar próximo à mensagem de erro para chamar tryFixXML, que adiciona automaticamente a declaração XML e completa tags auto-fechadas. Se ainda falhar, verifique manualmente a estrutura XML ou use document.documentElement.outerHTML nas ferramentas de desenvolvimento do navegador para ver o resultado analisado.
A ordem dos atributos em JSON não corresponde ao XML fonte?
O padrão JSON não garante a ordem dos atributos; a ferramenta mapeia os atributos na ordem do código-fonte. Se o seu negócio for sensível à ordem, reconstrua o JSON como um array ordenado usando toPairs do lodash ou ferramentas similares. A maioria dos motores JavaScript (V8, SpiderMonkey) preserva a ordem de inserção das chaves de string.
Um único elemento com o mesmo nome de tag não se torna um array, como lidar?
A ferramenta só converte em array quando detecta vários elementos irmãos com o mesmo nome de tag; se houver apenas um elemento, a ferramenta o mantém como um único objeto. Para forçar a conversão em array (mesmo com um único elemento), envolva com castArray do lodash após a conversão ou aplique a validação JSON Schema para forçar arrays.
Como preservar caracteres especiais em atributos XML (como <, &)?
O DOMParser desescapa automaticamente os valores dos atributos; a ferramenta preserva o conteúdo desescapado. Se o XML original tem <, o valor JSON convertido é <. Este é o comportamento padrão do XML. Se você precisar preservar a forma original com escape, use uma biblioteca xml-formatter ou um tokenizador XML personalizado em vez do DOMParser.
Por que a saída YAML não tem informações de tipo?
YAML suporta tipos nativamente (12 é number, true é boolean, null é null), mas o conversor YAML simples da ferramenta serializa todos os valores como strings. Para preservar tipos, use uma biblioteca YAML madura como js-yaml, ou aplique a validação JSON Schema no lado do parser.
Como são tratadas as Instruções de Processamento (PI) XML?
O DOMParser preserva as instruções de processamento XML (por exemplo, <?xml-stylesheet ...?>) como nós ProcessingInstruction em document.firstChild. A ferramenta atualmente percorre apenas nós Element, então as instruções de processamento são ignoradas. Para preservá-las, extraia manualmente document.firstChild.nodeValue.
Com o que abro o arquivo .json baixado?
O arquivo output.json baixado é um arquivo JSON padrão codificado em UTF-8. Você pode abri-lo com qualquer editor de texto (VS Code, Sublime, Notepad++) ou ferramenta JSON especializada (jq, JSDoc).
Glossário
- JSON (JavaScript Object Notation)
- Formato leve de intercâmbio de dados baseado na sintaxe de objetos JavaScript, mas independente de qualquer linguagem de programação. Suporta seis tipos básicos: objeto ({}), array ([]), string, number, boolean e null.
- XML (eXtensible Markup Language)
- Linguagem de marcação extensível definida pelo W3C em 1998. Usa tags para descrever dados e suporta namespaces, validação de esquemas e transformações XSLT.
- DOMParser
- API nativa do navegador (padrão W3C DOM) que analisa strings XML ou HTML em uma árvore DOM. Todos os navegadores modernos (Chrome, Firefox, Safari, Edge) a têm integrada, nenhuma biblioteca de terceiros é necessária.
- xml-formatter
- Biblioteca JavaScript leve (menos de 30 KB) para formatar (prettyPrint) e comprimir (minify) documentos XML. Suporta opções personalizadas de indentação, separadores de linha e collapseContent.
- Mapeamento de atributos
- Como os atributos de elementos XML são mapeados para campos de objetos JSON. A ferramenta usa uma abordagem de mapeamento direto: <book id="1"> se torna {id: "1"}, sem prefixo @.
- Fusão de elementos repetidos
- Elementos XML irmãos com o mesmo nome de tag (como vários <item>) são mesclados automaticamente em um array JSON.
- Campo value
- Convenção da ferramenta para o conteúdo de texto do elemento XML. O texto vai para um campo value.
- YAML (YAML Ain't Markup Language)
- Formato de serialização de dados amigável ao ser humano, amplamente utilizado em arquivos de configuração de Kubernetes, Docker Compose, Ansible e GitHub Actions.
- SOAP (Simple Object Access Protocol)
- Protocolo de comunicação de serviços web baseado em XML. As mensagens SOAP são encapsuladas em um envelope SOAP (namespace XML) e contêm um cabeçalho e um corpo (carga útil XML).
- Feed RSS / Atom
- Formatos de distribuição de conteúdo baseados em XML. RSS 2.0 organiza o conteúdo em uma estrutura <rss><channel><item>, enquanto Atom usa <feed><entry>.
- Namespace XML
- Mecanismo para evitar conflitos de nomes de elementos usando o atributo xmlns, no formato xmlns:prefix="uri".
- Seção CDATA
- Sintaxe XML especial <![CDATA[...]]> para incorporar texto com caracteres especiais (como <, >, &) sem escape.
- tryFixXML
- Função interna de reparo XML que adiciona automaticamente declarações XML ausentes e completa a barra final para tags auto-fechadas como br, hr e img.
- prettyPrint
- Modo de saída da biblioteca xml-formatter que adiciona automaticamente indentação e quebras de linha para melhorar a legibilidade.
Regras de mapeamento de elemento XML para campo JSON
Regras de conversão da ferramenta baseadas em DOMParser:
| Estrutura XML | Exemplo XML | Saída JSON | Regra de mapeamento |
|---|---|---|---|
element with attrs | <book id="1" category="fiction"/> | {"id": "1", "category": "fiction"} | Atributos mapeados diretamente para campos |
element with text | <title>Great Gatsby</title> | {"value": "Great Gatsby"} | Conteúdo de texto vai para o campo value |
attrs + text | <price currency="USD">12.99</price> | {"currency": "USD", "value": "12.99"} | Atributos e texto são irmãos |
nested elements | <book><title>Gatsby</title></book> | {"title": {"value": "Gatsby"}} | Elementos filhos se tornam campos |
repeated elements | <books><book/><book/></books> | {"book": [{}, {}]} | Elementos repetidos mesclados em array |
root element | <bookstore>...</bookstore> | {"bookstore": {...}} | Raiz encapsulada em { [tagName]: ... } |
namespace prefix | <svg:circle/> | {"svg:circle": {...}} | DOMParser suporta namespaces |
Comparação JSON vs YAML
Os dois formatos de saída suportados pela ferramenta:
| Dimensão | JSON | YAML | Notas |
|---|---|---|---|
| Sintaxe | { } : [ ] conciso | indentações + - listas | JSON conciso, YAML legível |
| Tipos de dados | number/bool/null nativos | number/bool/null nativos | Ambos preservam tipos |
| Indentação | 2 espaços | 2 espaços | Ferramenta usa 2 espaços |
| Arrays | [1, 2, 3] | - 1\n- 2\n- 3 | JSON colchetes, YAML traços |
| Comentários | não suportados | # comentários | YAML suporta comentários |
| Casos de uso | REST API, frontend-backend | K8s, Docker, CI/CD | Web usa JSON, config usa YAML |
Privacy & Security
Esta ferramenta de XML para JSON é executada inteiramente no seu navegador. A análise XML (baseada no DOMParser nativo do navegador), a travessia da árvore DOM, a serialização JSON e a conversão YAML são executadas em JavaScript do lado do cliente; xml-formatter é a única dependência externa (um pacote npm com menos de 30 KB). Os dados XML originais nunca são enviados a um servidor. Os uploads de arquivos usam a API FileReader nativa do navegador e nunca passam por um serviço intermediário. A ferramenta não usa cookies de rastreamento e não coleta dados de entrada ou uso. Todas as entradas e saídas são apagadas da memória assim que a página é fechada ou recarregada. Segura de usar com mensagens XML que contenham dados comerciais confidenciais (informações de pedidos, credenciais de usuário, respostas de API empresariais).
Authoritative References
- Comprimir JSON
- CSV para JSON
- JSON para CSV
- JSON Diff
- JSON Escape / Unescape
- Achatamento de JSON
- Formatador JSON
- Gerador de JSON
- Consulta JSONPath
- Mesclar JSON
- Reparar JSON
- Validador JSON Schema
- Ordenar JSON
- JSON Stringify
- JSON para HTML
- JSON para Java
- JSON to Markdown
- JSON para SQL
- JSON para TOML
- JSON para TypeScript
- XML para JSON
- JSON para XML
- YAML para JSON
- JSON para YAML
- JSON para Python
- JSON para Go
- JSON para Rust
- JSON para Swift
- JSON para C#
- JSON para C++
- JSON para PHP