Converter XML para TOML

Aqui você converte XML para TOML de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Reconstruído TOML funciona de um jeito diferente de XML. Não é a degradação gradual de um codec com perda: o que TOML consegue expressar é reproduzido fielmente, e o que não tem equivalente ali não sobrevive de jeito nenhum.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.
  • Vale saber Atributos e nós de texto do XML viram ambos chaves, e essa é uma decisão que o conversor toma por você.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

Como um elemento XML vira uma tabela TOML

Todo elemento com filhos vira uma tabela, escrita como um cabeçalho entre colchetes nomeando o caminho completo com pontos. Um elemento três níveis abaixo produz um cabeçalho contendo três nomes em vez de três blocos aninhados, porque o TOML expressa profundidade no cabeçalho, não na indentação.

Dentro de cada tabela, valores simples vêm primeiro e tabelas aninhadas vêm depois, a única ordem que o TOML permite — tudo sob um cabeçalho pertence a ele até o próximo cabeçalho aparecer. Isso significa que o resultado não lê na mesma ordem que o XML, e num arquivo com muitos elementos pequenos essa reorganização é considerável. É uma reordenação, não uma mudança: nenhum valor muda de caminho.

Elemento repetido mapeia exatamente para array de tabelas

Esta é a parte da conversão que não precisa de conserto. Dois ou mais elementos irmãos com a mesma tag viram um array de tabelas do TOML, com o cabeçalho de colchete duplo escrito uma vez por item na ordem do documento. Uma lista de dependências, uma lista de servidores, uma lista de regras — todas caem na forma que uma configuração TOML já usaria de qualquer jeito.

A ressalva conhecida do XML continua valendo por baixo disso. Uma única ocorrência de um elemento repetível não é um array, então vira uma tabela comum com cabeçalho de colchete simples em vez disso. Converta um arquivo com uma entrada e o mesmo arquivo com duas, e os dois resultados diferem estruturalmente.

As chaves entre aspas, e o que fazer com elas

Uma chave TOML sem aspas permite letra, número, sublinhado e hífen, nada mais. Atributos chegam do interpretador como chaves começando com arroba, o texto próprio de um elemento sob uma chave chamada #text, e uma declaração de namespace como algo parecido. Todas essas são escritas entre aspas no resultado, o que é TOML correto e parece exatamente tão estranho quanto soa.

Também são uma lista de tarefas. Uma chave entre aspas é o conversor avisando que esse nome veio da maquinaria do XML, não da sua configuração, e quase toda deveria ser renomeada. Faça essa passagem uma vez, imediatamente, enquanto você ainda lembra o que o XML queria dizer.

Tudo cai sob uma única tabela de nível superior

Um documento TOML é ele mesmo uma tabela, e um documento XML tem exatamente um elemento raiz, então a configuração inteira aparece um nível mais fundo do que você quer — sob um único cabeçalho nomeado a partir da raiz. Um arquivo com raiz chamada configuração produz uma tabela configuração contendo tudo dentro dela.

Promover o conteúdo é uma edição mecânica: apague o primeiro cabeçalho e remova esse segmento de todo outro cabeçalho no arquivo. Vale fazer isso em vez de conviver com aquilo, porque todo caminho da configuração fica um nível mais curto, e um arquivo TOML é lido pelos seus cabeçalhos.

Nada é descartado silenciosamente saindo do XML

O TOML não tem valor nulo, e converter a partir de formatos que têm — YAML em particular — significa chave sumindo em silêncio quando o valor está vazio. Isso não pode acontecer aqui, porque o XML também não tem nulo. Um elemento vazio e um elemento autofechado significam a mesma coisa, e os dois viram uma string vazia, escrita como duas aspas.

Então a garantia nesta direção é mais forte que nas vizinhas: todo elemento que tinha um valor no XML tem uma chave no TOML. Strings vazias são fáceis de passar batido num arquivo longo, então, se a migração também é uma chance de remover configuração que ninguém usa, procurar por esses pares vazios no resultado é o jeito mais rápido de achar.

Os valores tipados que o TOML tem e esta conversão não produz

O TOML tem data e hora na especificação principal, e um interpretador devolve isso como data de verdade, não como texto. Um valor XML é texto, então uma data na origem chega como uma string entre aspas e continua assim.

Tirar as aspas desses valores no resultado é o que os transforma em datas TOML de verdade, e leva um minuto. O caso inverso também vale observar: um valor escrito como "1.0" no XML é interpretado como número e escrito como o inteiro TOML 1, então uma versão virou inteiro e perdeu a forma. Colocar aspas de volta é o conserto.

Texto de várias linhas chega como uma string única com escape

Um elemento contendo várias linhas — uma descrição, um bloco de licença, um script embutido — vira uma única string TOML básica com sequências de escape onde as quebras de linha estavam. É correto e é ilegível, e anula o propósito de migrar para um formato que as pessoas editam à mão.

O TOML tem uma sintaxe de string de várias linhas, com aspas triplas, que guarda esse valor de forma legível, e o gravador não usa. Ache os valores com escape e reescreva cada um como um bloco de aspas triplas. Na maioria das configurações há um ou dois; numa configuração cheia de texto embutido, isso é um sinal de que o conteúdo deveria viver no próprio arquivo, não dentro de uma configuração.

O que uma configuração XML perde e o TOML não consegue substituir

Comentários são descartados, mesmo os dois formatos suportando comentário, então as explicações do arquivo antigo não aparecem no novo. Namespace deixa de significar qualquer coisa no momento em que o prefixo vira caractere dentro de uma chave. E o esquema vai embora: XML pode ser validado contra um XSD antes de uma aplicação iniciar, e o TOML não tem linguagem de esquema nenhuma na própria especificação.

Esse último é a troca a fazer conscientemente. TOML é mais fácil de ler, mais fácil de escrever à mão e inequívoco quanto a tipo, e abre mão da capacidade de rejeitar uma configuração malformada mecanicamente. Se o XML de fato era validado no seu processo de build, você está removendo uma checagem, e substituir isso é parte da migração, não um extra opcional.

Onde a conversão termina e a migração começa

O que a ferramenta entrega é todo valor do XML, na tabela certa, com o nome certo na maioria dos casos e um nome entre aspas, obviamente errado, no resto. É um bom ponto de partida e não é um arquivo de configuração pronto.

O trabalho depois é pequeno e não é opcional: derrube a tabela raiz, renomeie as chaves de atributo e de texto, tire as aspas das datas, reescreva os valores de várias linhas, e copie os comentários do original. Uma hora num arquivo grande. Pular isso produz uma configuração TOML que funciona e que ninguém que a ler depois vai acreditar que foi escrita de propósito.

Como converter XML para TOML

  1. Solte o seu arquivo XML nesta página, ou clique para escolher um.
  2. Escolha TOML como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo TOML pronto.

XML ou TOML: o que muda

XML comparado com TOML
XMLTOML
Nome completoExtensible Markup LanguageTom's Obvious Minimal Language
Extensão do arquivo.xml.toml
Tipo de mídiaapplication/xmlapplication/toml
Publicado pela primeira vez19982013
Publicado porW3C
EspecificaçãoXML 1.0TOML 1.0
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorTodos os navegadoresNenhum navegador
Considerado no lugarJSON, YAMLYAML, JSON, INI

O que se mantém

Os comentários passam. XML e TOML têm sintaxe de comentário, então as notas para quem cuidar do arquivo depois não são jogadas fora em silêncio.

Abrir o resultado

Nenhum navegador lê TOML. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.

Visual Studio Code lê tanto XML quanto TOML, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

Os dois miram trabalhos diferentes: XML em mover dados entre programas, TOML em a edição. Vale pesar isso antes, porque o motivo de um existir costuma ser o motivo de o outro ser incômodo.

XML é o formato da W3C, publicado em 1998. Está descrito em XML 1.0, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

TOML e de 2013, descrito em TOML 1.0. Visual Studio Code lê o formato.

XML foi publicado em 1998 e TOML em 2013. O mais antigo costuma ser o arquivo mais seguro para entregar; o mais novo faz o mesmo com menos bytes.

De XML para TOML: perguntas frequentes

Meu arquivo XML é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter XML para TOML é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter XML para TOML?

XML e TOML descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. Atributos e nós de texto do XML viram ambos chaves, e essa é uma decisão que o conversor toma por você.

Um arquivo TOML abre no navegador?

Nenhum navegador lê TOML. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.

Mais sobre esses formatos