Formatador de XML

Cole ou carregue XML, valide com o parser do navegador: saída limpa com indentação de 2 ou 4 espaços, CDATA intacto e elementos autofechados.

A análise e a formatação acontecem localmente no seu navegador. Seu XML nunca sai do dispositivo.

Indentação
—

Como funciona

Colar XML e pressionar Formatar roda o DOMParser embutido do navegador — o mesmo parser síncrono da plataforma — sobre o seu texto. Se o resultado contiver um nó parsererror, a mensagem com a dica de linha/coluna é exibida no lugar da saída. Com a parse limpa, um serializador recursivo percorre a árvore e reconstrói o documento com a indentação escolhida, um elemento por linha.

Por que o DOMParser falha (ou parseia) exatamente onde falha
O DOMParser é estrito e síncrono: bem-formado é tudo-ou-nada, então uma única tag não fechada invalida o arquivo inteiro. O texto parsererror gerado (incluindo a dica de posição que os navegadores anexam, como "Line Number: 12") aparece literalmente como a linha de erro — a ferramenta não tenta consertar seu XML, porque conserto silencioso altera documentos.
A ordem dos atributos é preservada como está
O DOM expõe os atributos na ordem do documento e o serializador os escreve de volta nessa mesma ordem. Nada é ordenado, deduplicado ou normalizado, então comparar dois arquivos formatados mostra apenas mudanças reais de conteúdo — não um embaralhamento de atributos.
CDATA e elementos vazios
As seções CDATA são reemitidas inteiras, como texto bruto — são a forma padrão de carregar conteúdo tipo markup e convertê-las em entidades seria reescrita, não reformatação. Elementos sem filhos são escritos em forma autofechada, então <tag></tag> vira <tag/>.

Perguntas frequentes

Por que meu arquivo diz que não está bem-formado?

XML tem uma lista curta de regras rígidas e o navegador rejeita o documento inteiro quando uma delas quebra. Os vilões habituais: mais de um elemento raiz, uma tag fechada com nome errado ou nunca fechada, um & ou < sem escape no texto, caixa diferente entre abertura e fechamento, ou um caractere perdido antes da declaração XML. A linha de erro mostra a posição reportada para você ir direto ao problema.

Qual é a diferença entre CDATA e escape?

As duas formas carregam texto que quebraria o XML. O escape substitui caracteres especiais por entidades (&amp; para &, &lt; para <), enquanto uma seção <![CDATA[ ... ]]> marca todo o conteúdo interno como texto bruto. Este formatador preserva os blocos CDATA verbatim — não os converte em texto escapado nem vice-versa.

Vocês resolvem namespaces do XML?

Não. Prefixos de namespace (como <soap:Envelope>) são preservados exatamente como escritos — inclusive atributos e nomes de elemento. O formatador apenas re-indenta: não expande prefixos em URIs nem valida se um prefixo foi declarado, então um erro de digitação de namespace que parseia também é impresso.

Formatar pode mudar o significado do meu documento?

Re-indentar adiciona espaço entre elementos, o que só importa se o seu parser trata espaço em branco dentro de elementos como dado (raro, mostly em documentos validados por esquema ou de conteúdo misto). A ordem dos atributos, as entidades e os blocos CDATA ficam como estão, e um elemento vazio é impresso como <tag/> exatamente como o XML define.

Algo é enviado para um servidor?

Não. A análise e a impressão bonita usam o DOMParser embutido do navegador e JavaScript puro. Seu XML nunca sai do dispositivo e não há requisição de rede associada à formatação.