Formatar e compactar XML

Cole o XML para aplicar recuo ou para remover os espaços entre as tags. Atributos, comentários, seções CDATA e a declaração voltam sem alteração, e erros de tag são indicados com linha e coluna.

Funciona localmente no seu navegador

Identar e compactar mantêm os mesmos dados

O formatador apenas acrescenta ou remove espaços entre as tags; valores de atributo, comentários, seções CDATA, a declaração, o DOCTYPE e as instruções de processamento voltam byte a byte. A compactação mantém os comentários, e uma subárvore marcada com xml:space="preserve" fica intacta nos dois botões.

Como formatar ou compactar XML

Aplica recuo ao XML colado para leitura, ou remove os espaços entre as tags para deixar o documento compacto. A apresentação é reconstruída em uma única varredura: atributos, comentários, seções CDATA, declaração XML, DOCTYPE e instruções de processamento são devolvidos sem alteração.

A varredura acontece nesta aba: nada é enviado e a página continua funcionando sem conexão. O aninhamento das tags é verificado, mas não há validação contra um DTD ou um XML Schema.

  1. Cole o XML no campo acima. O recuo e as quebras de linha do original não importam: a apresentação é reconstruída a partir da estrutura.
  2. Clique em Formatar XML para indentar cada nível com quatro espaços, ou em Compactar XML para remover os espaços entre as tags e devolver o documento no menor número de linhas possível.
  3. Leia a mensagem abaixo dos botões. Tag fechada errada ou não fechada, segundo elemento raiz, texto fora da raiz, um “<” solto no texto ou em um valor de atributo, valor sem aspas e comentário, seção CDATA ou tag sem fechamento são informados com linha e coluna.
  4. Clique em Copiar para levar o resultado; o botão copia a saída formatada e, quando ainda não existe resultado, o texto de entrada. Limpar esvazia a entrada e o resultado de uma vez.

O que o formatador muda e o que ele preserva

O que a formatação muda

A formatação só acrescenta recuo: quatro espaços por nível, e um elemento cujo conteúdo é apenas texto permanece em uma linha. Conteúdo misto nunca é reorganizado, então <p>Hello <b>world</b> !</p> mantém os espaços e volta exatamente como foi escrito.

Valores de atributo, comentários, seções CDATA, a declaração, o DOCTYPE e as instruções de processamento são copiados byte a byte, e a ordem dos atributos é preservada. A única exceção é um valor sem aspas, como class=x, que volta como class="x" e é sinalizado, porque o XML exige as aspas.

O que a compactação remove

A compactação remove os textos formados só por espaços entre as tags em todos os níveis, então um documento indentado vira uma única linha compacta. O conteúdo textual não é tocado: <a> spaced text </a> e o conteúdo misto mantêm os espaços, e um elemento cujo conteúdo inteiro é espaço também os mantém.

Os comentários sobrevivem à compactação; apague-os você mesmo se os bytes importarem. Uma subárvore marcada com xml:space="preserve" fica intacta nos dois botões.

Quando o documento não está bem formado

Os problemas são indicados por posição, por exemplo “Linha 1, coluna 10: </b> fecha <a> em vez dele.”, “Linha 1, coluna 7: <a> nunca é fechado.” ou “Linha 1, coluna 1: </x> não tem tag de abertura.”. O resultado ainda é exibido para você ver o que foi possível montar, mas a posição indicada é o que corrigir primeiro.

Se a entrada não contém nenhum elemento (texto simples ou só espaços), a ferramenta avisa em vez de inventar uma saída. Apenas os cinco primeiros problemas são listados, com a contagem do restante.

Tamanho, velocidade e limites

Um documento de 600 KB com 20.000 elementos é formatado em cerca de 0,15 segundos no Chrome, e uma saída com mais de 200.000 caracteres é exibida sem coloração para a aba continuar respondendo. O limite prático é a memória do seu próprio dispositivo.

A verificação é apenas estrutural: a ferramenta não valida contra DTD ou XML Schema, não resolve entidades nem baixa arquivos externos e não informa quais prefixos de namespace estão declarados. O recuo é fixo em quatro espaços.

Ferramentas recentes: