O código desta página não rodou.

Abrir o index.html direto de uma pasta bloqueia os módulos de JavaScript, então não vai acontecer nada quando você escolher um arquivo. Sirva a pasta por http:

powershell -ExecutionPolicy Bypass -File serve.ps1

Depois abra http://localhost:8080/.

Formatador de XML — organize, esprema ou converta em JSON

XML organizado para ler ou espremido para publicar, e convertido em JSON nos dois sentidos. Nada disso é colado no servidor de outra pessoa.

Idioma: Português
Ver o código-fonte
Seus arquivos XML e JSON são processados no navegador. Sem envio para processamento.

Formatar e converter são aritmética sobre um texto, feita aqui, nesta página. O analisador é escrito à mão e está em src/shared/parse-xml.js, e não há mais nada. Esta ferramenta não tem função de rede de espécie alguma — nada para buscar, nada para enviar — e isso pesa aqui mais do que a palavra “XML” sugere: o que chega neste formato costuma ser uma nota fiscal, um extrato bancário, um prontuário, ou uma requisição SOAP com as credenciais de alguém no cabeçalho.

Verificação ao vivo: verificando…

Offline: verificando…

Você não precisa acreditar na nossa palavra: abra o DevTools, olhe a aba de rede e formate alguma coisa. Nenhuma requisição carrega um caractere do que você colou. Ou desconecte da internet e formate assim mesmo.

1 Escolha o trabalho

Layout Espremido é o mesmo documento sem nenhum dos espaços que só estavam ali para leitura.

Nome do elemento externo XML tem um elemento só lá no topo e JSON não, então é preciso inventar um.

2 Cole aqui

vazio

3 Leve o resultado

Nada ainda.

 

Ver como Markdown

Como formatar XML sem enviar o arquivo

  1. Escolha o trabalho. Duas abas, uma caixa: Formatar organiza o XML ou esprema; Converter transforma em JSON, ou o JSON de volta em XML. O XML que você acabou de organizar é o XML que você converte, sem colar duas vezes.
  2. Cole, ou arraste o arquivo. Qualquer coisa que você consiga selecionar e copiar serve, e um arquivo .xml, .svg, .rss ou .xsd arrastado para o seletor é lido pelo seu próprio navegador e colocado na caixa — não existe etapa de envio para pular.
  3. Escolha a indentação, ou esprema. Dois espaços, quatro, ou uma tabulação. Espremer é o mesmo documento sem nenhum dos espaços que só estavam ali para leitura, e o resultado diz quantos bytes isso economizou.
  4. Leia o erro onde o erro está. Um analisador que falha aqui diz qual tag nunca foi fechada e em que linha e coluna, em vez de “erro na linha 1”, que é o que um navegador diz de um documento que leu de uma vez só. Clique em Ir para o erro para voltar a essa posição no texto. Ao digitar, o foco fica onde está até você decidir movê-lo.
  5. Leve o resultado. Copie, ou baixe como arquivo, com o nome do formato em que ele saiu.

A versão longa

Como formatar e conferir XML Formate, minifique e confira XML localmente. Siga erros e entenda a conversão de atributos, texto e arrays antes de passar para JSON.

Perguntas

Meu XML é enviado para algum lugar?

Não. O analisador e o impressor desta página são funções que rodam no seu próprio navegador, no seu próprio hardware. Esta ferramenta não tem função de rede de espécie alguma — nunca busca nada e nunca envia nada — e a Content-Security-Policy da página lista todos os endereços que ela pode contatar, e nenhum deles é nosso. Isso importa mais para XML do que a fama do formato sugere: o que chega nele costuma ser uma nota fiscal, um extrato bancário, um prontuário, ou uma requisição SOAP com credenciais no cabeçalho.

Ele resolve entidades externas?

Não, e não há nada para desligar. Resolver entidades externas é o jeito de convencer um analisador de XML a ler arquivos do computador que o executa — o ataque que costuma ser escrito XXE — e src/shared/parse-xml.js é um leitor escrito à mão sem resolução de entidades nenhuma. O seu texto também nunca é entregue ao DOMParser do próprio navegador. Um DOCTYPE passa adiante sem nunca ser executado.

O que se perde ao converter XML para JSON?

A ordem do conteúdo misto, os comentários, e a diferença entre um atributo e um elemento filho — essa última suavizada em vez de apagada, porque um atributo vira um membro cujo nome começa com @. O texto próprio de um elemento vira #text quando precisa ficar ao lado de outra coisa, e filhos repetidos viram um array. Todo valor continua sendo texto: XML não tem tipos, e decidir que 8080 era um número seria inventar informação.

O que se perde ao converter JSON para XML?

A diferença entre um objeto vazio, um array vazio e um texto vazio, que viram todos os três um elemento vazio, e o tipo de cada valor, porque XML não tem tipos. Um array vira um elemento repetido, que é a única forma que se lê de volta, e uma chave que um nome de elemento não aguenta tem os caracteres complicados substituídos em vez de sair um documento que nenhum analisador vai ler.

Ele formata um SVG, um feed RSS ou um arquivo POM?

Formata. Os três são XML, e isto lê XML em vez de algum dialeto específico. Um SVG organizado assim fica mais fácil de editar à mão; um feed RSS ou Atom normalmente é publicado espremido e fica ilegível até alguma coisa abrir. O jeito como fica disposto não muda nada do que o documento significa.

Reindentar o XML muda o que ele significa?

Para um documento cujos elementos contêm outros elementos, não. Onde pode importar é no texto: o espaço em branco dentro de um elemento que contém palavras faz parte desse texto, então um elemento que só contém texto é deixado numa linha em vez de ser aberto. As seções CDATA são copiadas exatamente como estavam.

Por que não usar o analisador de XML do próprio navegador?

Por causa do que ele diz quando o documento está quebrado. O DOMParser devolve um documento de erro cuja redação é diferente em cada navegador e muitas vezes se resume a “erro na linha 1”. Um leitor escrito à mão consegue dizer qual tag nunca foi fechada, e onde ela foi aberta, que é justamente o que você precisava saber. Não resolver entidades externas é o outro motivo.

De que tamanho pode ser o arquivo?

Não há limite nenhum posto aqui, porque não há servidor pagando por um. O teto de verdade é o seu próprio computador: alguns megabytes de XML vão bem, e num documento muito longo a página espera uma pausa na sua digitação antes de reformatar, em vez de disputar o teclado com você.

É grátis, e preciso de conta?

É grátis, e não tem conta, nem login, nem período de teste, nem limite de quanto você cola. O site exibe publicidade, e é ela que paga a conta; os anúncios não recebem nada sobre o seu texto.

Funciona offline?

Funciona. Carregue a página uma vez, desligue a internet e ela continua funcionando. Esse é também o jeito mais simples de provar que nada é enviado: uma ferramenta que mandasse o seu XML embora para formatar pararia no instante em que você desconectasse.