Também disponível em: English · Español · Français · العربية
Formatador de XML online
Cola o teu XML, escolhe a indentação e recebe o resultado formatado à medida que escreves, sem que nada saia do navegador.
O que é um formatador de XML?
Um formatador de XML pega num documento XML e volta a escrevê-lo com indentação consistente — uma etiqueta por linha, filhos deslocados para a direita em relação ao pai — para que a estrutura aninhada se veja de imediato em vez de estar espremida numa única linha comprida.
Serve para quem tem de ler XML escrito por uma máquina e não por uma pessoa: o feed de um agregador de notícias, um ficheiro de configuração exportado por outra ferramenta, a resposta em bruto de uma API que devolve XML em vez de JSON, ou um sitemap com centenas de entradas seguidas sem uma quebra de linha entre elas.
Esta página faz isso — e só isso — inteiramente no navegador: colas o XML, escolhes 2 espaços, 4 espaços ou tabulação (ou pedes uma versão minificada, tudo numa linha), e o resultado aparece no painel da direita à medida que escreves.
Como formatar XML em três passos
- Cola o teu XML à esquerda. O painel da direita atualiza-se sozinho à medida que escreves, sem precisares de premir nenhum botão.
- Escolhe a indentação. Seleciona 2 espaços, 4 espaços ou tabulação, ou marca «Minificar» para reduzir tudo a uma única linha.
- Copia o resultado. Usa o botão de copiar para levar o XML formatado para onde precisares, e confirma no painel abaixo o que ficou exatamente como estava.
Porque o espaço em branco em XML é conteúdo
A secção 2.10 da especificação XML 1.0 do W3C é direta: «An XML processor MUST always pass all characters in a document that are not markup through to the application» — um processador de XML tem sempre de entregar à aplicação todos os caracteres que não sejam marcação.
Isto é uma diferença real em relação ao HTML, onde um browser colapsa por defeito espaços em branco repetidos e quebras de linha, porque aí são apenas formatação visual. Em XML, o espaço entre etiquetas é dado de carácter — conteúdo —, e um embelezador que o reorganiza à vontade está, tecnicamente, a editar o documento em silêncio.
Por isso esta ferramenta muda exatamente uma coisa: o texto que fica entre marcação e que não contém mais do que espaço em branco. Todo o resto do documento sai exatamente como entrou, carácter por carácter.
Essa garantia não é só uma intenção — é verificada por um teste: a concatenação de todas as partes do documento que não são espaço em branco puro é comparada byte a byte antes e depois de formatar, sobre um corpus escrito à mão e um varrimento gerado de 2000 documentos, com um caso de controlo que prova que essa comparação é de facto capaz de falhar. No total, 335 verificações.
O que fica exatamente como estava
A especificação define um atributo próprio para isto na secção 2.10: xml:space «may be attached to an element to signal an intention that in that element, white space should be preserved by applications», e o valor preserve «indicates the intent that applications preserve all the white space». Esta ferramenta respeita-o: qualquer elemento marcado com xml:space="preserve" — e tudo o que estiver lá dentro, porque a intenção é herdada até um xml:space="default" a desligar outra vez — fica exatamente como estava, em vez de ser reindentado.
A segunda regra é: qualquer elemento que contenha texto próprio nunca é reindentado, quer esse texto esteja sozinho — um elemento de título a envolver o nome de um livro — quer ao lado de elementos filhos, como um parágrafo com uma palavra a negrito no meio.
Esta segunda regra começou por ser mais estreita: só recusava conteúdo misto, texto e elementos filhos ao mesmo tempo, e reindentava sem problemas um elemento cujo único filho era texto. Só que isso transforma um elemento simples que envolve um título nalgo em que a palavra passa a ter à frente uma mudança de linha e quatro espaços, e atrás uma mudança de linha e dois espaços — cinco caracteres a mais que são conteúdo, não formatação. O teste de invariante descrito acima falhou logo com o primeiro documento do seu próprio corpus, e foi assim que a regra ficou mais estrita.
Outras partes do documento passam intactas por construção, sem qualquer tratamento especial: os comentários (a secção 2.5 nota que «the string '--' MUST NOT occur within comments»), as secções CDATA (a secção 2.7 diz que «within a CDATA section, only the CDEnd string is recognized as markup»), as instruções de processamento e a declaração de tipo de documento — incluindo uma com um subconjunto interno entre parênteses retos, cujo conteúdo pode ele próprio conter um sinal de maior que. Os valores dos atributos também nunca são tocados, nem sequer os que contêm um sinal de maior que ou o outro tipo de aspas.
Porque é gratuito?
Esta ferramenta corre inteiramente no teu navegador: o XML que colas nunca sai do teu computador, não há nenhum servidor a processar ficheiros e, por isso, não há custo nenhum a repercutir num plano pago.
Não precisas de criar conta, não há limite de utilizações escondido atrás de um botão de assinatura e o resultado que copias não tem nenhuma marca de água nem assinatura acrescentada ao teu XML.