Formatar XML
Transforme um bloco de XML ilegível em algo fácil de ler, ou minifique de volta. Comentários, seções CDATA e namespaces continuam intactos. Nada fica armazenado.
- Nunca armazenado
- Sem fila, sem espera
- Sem cadastro, sem marca d'água
O XML formatado aparece aqui.
Como funciona
Cole seu XML
Ou solte um arquivo .xml, .svg, .rss ou .xsd. Ele nunca fica armazenado.
Escolha a indentação
Dois espaços, quatro, tabulações ou minificado em uma só linha.
Copie ou baixe
Se o XML estiver quebrado, você recebe a linha e a coluna em vez de um resultado.
Por que reindentar XML é mais arriscado do que parece
Em XML, os espaços em branco são significativos por padrão, e é isso que pega muita gente de surpresa. Diferente do JSON, em que a formatação é livre, um parser XML é obrigado a informar os espaços e quebras de linha entre elementos como conteúdo de texto — é o schema, quando existe, que diz que eles podem ser ignorados. Então reindentar um documento realmente o altera: na maioria dos arquivos de configuração e de dados isso não faz diferença, mas em documentos com conteúdo misto — texto e elementos lado a lado, como em XHTML ou DocBook — pode mudar o que o documento diz.
Por isso, a formatação aqui não mexe no que precisa ficar como está. Um elemento com xml:space="preserve" mantém o conteúdo exatamente como foi escrito, porque esse atributo existe justamente para dizer isso. Seções CDATA passam intactas; elas existem para guardar texto que não deve ser interpretado, e reformatar dentro de uma delas a corromperia. Referências de entidade continuam como referências, em vez de serem expandidas nos caracteres que representam.
Os namespaces são preservados exatamente como foram escritos — prefixos, declarações e os elementos a que estão vinculados. Parece óbvio, mas não é: um formatador que normaliza prefixos, ou move declarações para onde acha que deveriam ficar, gera um documento tecnicamente equivalente que falha em ferramentas que comparam prefixos literais. A ordem dos atributos também é mantida, embora o XML a considere irrelevante, pelo mesmo motivo — um diff com a versão anterior vale mais do que arrumação.
O que é verificado durante a formatação é a boa formação: toda tag fechada, aninhamento correto, um único elemento raiz, caracteres válidos, e-comerciais e sinais de menor e maior escapados corretamente. Esse é o mais baixo dos dois níveis de exigência do XML. Um documento pode estar perfeitamente bem formado e ainda ser inválido para o DTD ou schema que o rege, e nenhuma formatação revela isso.
Quando você precisa de outra coisa
xmllint --format in.xml faz o mesmo trabalho na linha de comando e já vem instalado na maioria dos sistemas Unix; xmlstarlet fo --indent-tab dá mais controle sobre a própria indentação. Os dois lidam com arquivos muito maiores do que uma página consegue manter na memória.
Quando o documento precisa ser comparado, assinado ou armazenado em forma canônica, formatar é a operação errada. O XML canônico — xmllint --c14n — gera a única forma normalizada à qual dois documentos equivalentes se reduzem, e é disso que dependem as assinaturas digitais sobre XML. Indentar um documento assinado quebra a assinatura, e essa é a forma mais cara de aprender isso.
Perguntas frequentes
Meu XML fica armazenado em algum lugar?
Não. Não há chamada ao servidor nem registro, e nada fica armazenado. Você pode se desconectar da internet depois que a página carregar, e ela continua funcionando. Isso importa aqui mais do que parece: o que as pessoas colam em um formatador online são respostas de API, arquivos de configuração e payloads de erro, e eles costumam carregar tokens, dados de clientes e nomes de hosts internos.
O que é preservado na formatação?
Comentários, seções CDATA, instruções de processamento, a declaração XML e todos os prefixos de namespace. A ordem dos atributos é mantida como foi escrita. Um elemento que contém só texto fica em uma linha, porque quebrar <title>Hello</title> em três linhas não deixa nada mais bonito — e em um documento com conteúdo misto mudaria o que o texto realmente diz.
Indentar muda o significado do meu XML?
Em um elemento que contém apenas outros elementos, não. Mas o XML não tem uma regra geral de que espaços em branco são irrelevantes — em conteúdo misto, em que texto e elementos ficam lado a lado, o espaço adicionado FAZ parte do texto. É por isso que elementos só com texto ficam em uma linha aqui, em vez de serem divididos. Se o seu documento tem conteúdo misto de verdade e os espaços importam para ele, minificar é a operação mais segura.
Funciona com HTML?
Só se o HTML for XML bem formado — e a maior parte do HTML real não é. Tags <br>, <img> e <li> sem fechamento, atributos sem aspas e e-comerciais soltos são HTML válido e XML inválido. O parser aqui é um parser XML estrito, então ele informa esses casos como erros em vez de adivinhar. XHTML e SVG são formatados perfeitamente.
E SVG?
Sim — SVG é XML, e esta é uma boa forma de ler um SVG minificado. Paths, gradientes e estilos incorporados passam sem alteração; só os espaços entre os elementos mudam de lugar.
Existe limite de tamanho?
A memória disponível, e não um limite imposto por nós. Documentos de alguns megabytes são formatados na hora; os muito grandes ficam limitados pelo quanto cabe na memória de uma vez, não por nada do nosso lado.
Bom saber: Só a boa formação. O documento é verificado quanto a tags balanceadas, aninhamento correto e caracteres válidos, e reindentado — mas nenhum DTD ou XSD é buscado ou aplicado, então um arquivo pode ser formatado sem erro e ainda assim ser inválido para o seu schema. Os namespaces são preservados exatamente como foram escritos.
Coloque esta ferramenta no seu site
Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.
Mais Ferramentas para desenvolvedores
Validador XML
Descubra exatamente onde o XML está quebrado
Formatador JSON
Deixe JSON ilegível fácil de ler
Validador JSON
Descubra exatamente onde o JSON está quebrado
Decodificar Base64
Transforme Base64 de volta em texto ou arquivo
Codificar Base64
Transforme texto ou um arquivo em Base64
Decodificador JWT
Veja o que há dentro de um token, com privacidade