Formatador e minificador XML

Cole XML para formatá-lo, embelezá-lo ou minificá-lo instantaneamente.

Nenhum dado sai do seu dispositivo

Como usar

  1. Cole seu XML na área de entrada.
  2. Clique em Formatar para embelezar ou Minificar para comprimir.
  3. Copie ou baixe o resultado.

Perguntas frequentes

O que acontece se meu XML contém erros ?

A ferramenta valida seu XML usando o DOMParser integrado ao navegador. Os erros de sintaxe são exibidos em uma caixa vermelha acima da saída.

Ele suporta seções CDATA, comentários e instruções de processamento ?

Sim. O formatador preserva todos os tipos de nós XML, incluindo seções CDATA, comentários e instruções de processamento.

Há limite de tamanho ?

Não há limite rígido · depende da memória do seu navegador. Arquivos XML de vários MB costumam ser formatados instantaneamente.

Um tour prático pelo XML

O XML 1.0 tornou-se uma Recomendação do W3C em 10 de fevereiro de 1998, editado por Tim Bray, Jean Paoli e C. M. Sperberg-McQueen, com um grupo de trabalho presidido por Jon Bosak, da Sun. A frase de lançamento de Tim Bray capturou a intenção do design: «O XML é extensível, internacionalizado, robusto, simples e feito para a Web.» A versão canônica atual é a Quinta Edição, publicada em 26 de novembro de 2008, editada por Bray, Paoli, Sperberg-McQueen, Eve Maler e François Yergeau. O XML descende diretamente do SGML (ISO 8879:1986), um formato de documento muito maior e muito mais difícil de implementar, do qual o XML removeu a maioria das partes raramente usadas, mantendo intacto o modelo de documento.

Onde o XML ainda vive em 2026

O JSON dominou as cargas de APIs REST por mais de uma década, mas o XML permanece entrincheirado em qualquer lugar onde o rigor de schema, a semântica de documentos ou os padrões estabelecidos o fixam. Saber onde você vai encontrá-lo num dado dia é metade do valor de um bom formatador:

Bem formado vs. válido: não são a mesma coisa

O XML usa dois níveis de conformidade diferentes, e eles são fáceis de confundir:

Este formatador verifica apenas se está bem formado. O DOMParser embutido do navegador relata o primeiro erro de análise que encontra via um elemento parsererror, que a ferramenta exibe na caixa de erro vermelha. A validação contra um schema precisa de uma ferramenta diferente (Saxon para XSD, libxml2 com xmllint --schema, o serviço validador do W3C etc.).

As cinco referências de entidade predefinidas

Conforme o W3C XML 1.0 §4.6, «documentos bem formados não precisam declarar nenhuma das seguintes entidades»: amp, lt, gt, apos, quot. O ponto e vírgula final é obrigatório: o XML, ao contrário de alguns usos do HTML, nunca vai aceitar &amp sem um ; de fechamento.

EntidadeCaractereOnde é obrigatória
&lt;<Sempre no conteúdo do elemento (caso contrário, iniciaria uma tag)
&amp;&Sempre (caso contrário, iniciaria uma referência de entidade)
&gt;>Obrigatória dentro da sequência ]]> no conteúdo; recomendada em outros lugares por simetria
&apos;'Dentro de valores de atributo delimitados por aspas simples
&quot;"Dentro de valores de atributo delimitados por aspas duplas

Seções CDATA, comentários e instruções de processamento

Três recursos sintáticos especiais que qualquer pessoa que formata XML acaba encontrando:

Namespaces

O mecanismo de namespaces do XML é o que permite que vários vocabulários coexistam em um único documento: Atom mais uma extensão personalizada, SOAP mais cabeçalhos WS-Security, a parte principal de um documento OOXML referenciando relacionamentos, desenhos e imagens de namespaces irmãos. A sintaxe é xmlns="…" para um namespace padrão e xmlns:prefix="…" para um com prefixo, e o formatador preserva ambos inalterados. As URIs de namespace são identificadores, não URLs: elas não precisam resolver para nada.

Duas armadilhas de segurança famosas do XML

O ataque Billion Laughs. Um pequeno arquivo XML com entidades que se expandem recursivamente pode inchar até bilhões de caracteres na memória do analisador:

<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!-- … nine more layers later, the document expands to 10^9 lols -->

Os analisadores modernos limitam a expansão de entidades para derrotar isso. Os ataques XXE (XML External Entity) exploram um analisador que resolve entidades externas para ler arquivos locais (<!ENTITY xxe SYSTEM "file:///etc/passwd">) ou disparar requisições SSRF a partir do servidor. A folha de dicas de prevenção de XXE da OWASP é inequívoca: «a forma mais segura de prevenir XXE é sempre desabilitar completamente as DTDs (entidades externas).» É exatamente isso que o DOMParser do navegador faz: ele ignora completamente as declarações de entidade DOCTYPE, e é por isso que este formatador do lado do cliente também é seguro para receber XML não confiável.

Formatação bonita vs. minificação

O atributo xml:space é a sua válvula de escape quando o espaço em branco realmente importa, código-fonte literal embutido na documentação, por exemplo. Defina xml:space="preserve" em um elemento ancestral e um processador conforme manterá cada espaço e quebra de linha nos descendentes byte a byte.

Erros XML comuns que um formatador detecta

  1. & sem escape no conteúdo de texto. Um e-comercial solto é sempre inválido; use &amp;.
  2. Tags incompatíveis ou não fechadas. O erro de análise mais comum. Cada <tag> precisa de um </tag> correspondente (ou use a forma autofechada <tag/>).
  3. Múltiplos elementos raiz. Um documento XML deve ter exatamente um elemento mais externo. Se você tem dois irmãos no nível superior, envolva-os em um pai.
  4. Incompatibilidade de codificação. Uma declaração <?xml version="1.0" encoding="UTF-8"?> deve corresponder à codificação real de bytes do arquivo. Um BOM de UTF-16 com uma declaração de UTF-8 é a versão clássica desse bug.
  5. Caracteres reservados em valores de atributo. <tag attr="a<b"> é inválido mesmo que o < pareça inofensivo dentro das aspas.
  6. BOM perdido na frente da declaração XML. Alguns editores de texto inserem silenciosamente um BOM de UTF-8 que confunde analisadores rígidos.
  7. Finais de linha misturados dentro de regiões xml:space="preserve". CR / LF / CRLF inconsistentes podem produzir artefatos visíveis de espaço em branco ao fazer a ida e volta entre plataformas diferentes.

Mais perguntas frequentes

Por que a formatação do meu XML não produz saída?

Na maioria das vezes, porque a entrada não está bem formada. A caixa de erro acima da saída mostra o primeiro erro de análise que o DOMParser do navegador encontra, geralmente uma tag faltando ou incompatível, um & sem escape ou um elemento raiz faltando. Corrija o erro e execute de novo.

Meu XML é enviado para um servidor?

Não. A formatação e a minificação rodam ambas dentro do DOMParser embutido do navegador e de um pequeno serializador em JavaScript. O seu XML nunca sai da página, o que é importante para cargas SOAP, arquivos de configuração e qualquer outra coisa que possa conter credenciais, URLs internas ou dados sensíveis de clientes.

A ferramenta pode validar contra um schema XSD ou DTD?

Não. A validação de schema exige carregar o arquivo de schema e resolver suas referências, o que é um problema diferente da verificação de boa formação que o navegador faz. Para validação de XSD, use o Saxon ou o xmllint --schema na linha de comando, ou o serviço validador de XML Schema do W3C.

O XML ainda é relevante em 2026, ou eu deveria simplesmente usar JSON?

Depende do que você está fazendo. Para novas APIs REST, o JSON é quase sempre a escolha certa. Mas o XML ainda é o padrão para documentos de escritório (.docx, .xlsx), mensageria corporativa (SOAP, padrões financeiros), recursos do Android, EPUB, RSS / Atom, SVG e a maioria dos intercâmbios de setores regulados. Saber ler, formatar e validar XML ainda é uma habilidade básica; só não é a primeira ferramenta de todo dia do jeito que o JSON é.

O que significa «preservar todos os tipos de nó» para o formatador?

As seções CDATA, os comentários e as instruções de processamento são todos mantidos exatamente como aparecem na entrada: o formatador só muda o espaço em branco entre os elementos. Então um bloco <![CDATA[ if (a < b) { … } ]]> faz a ida e volta byte a byte mesmo que seu conteúdo contenha caracteres < que de outra forma precisariam de escape.

Ferramentas relacionadas

Formatador e validador JSON gratuito on-line JSON para YAML Formatador SQL gratuito