Converter INI para XML

Aqui você converte INI para XML 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.
  • Sem perdas Nada é descartado. O XML guarda exatamente o que o INI guardava.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.

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

A cara de um arquivo INI depois de virar XML

O mapeamento é direto o bastante para prever de antemão. Um cabeçalho de seção vira um elemento, cada chave dentro dela vira um elemento filho, e o valor vira o texto desse elemento. Um arquivo INI com uma seção `[db]` contendo host e porta sai como um elemento db contendo um elemento host e um elemento port.

Essa previsibilidade é o motivo de este par valer uma ferramenta em vez de um script improvisado. Não há ambiguidade para resolver, porque um INI oferece pouquíssima coisa para interpretar: um nível de agrupamento, uma chave, um valor por linha. O que é interessante acontece nas bordas, e o resto desta página é sobre essas bordas.

Se o seu INI ganha um elemento raiz próprio

XML exige exatamente um elemento mais externo, e um INI não tem esse conceito. O conversor resolve isso olhando o que leu: se o arquivo tinha uma seção só, essa seção vira a raiz — um arquivo com `[configuracoes]` sozinho produz um documento cuja tag raiz é configuracoes. Qualquer outra coisa, duas seções ou mais, ou chaves escritas antes do primeiro cabeçalho, é embrulhada numa raiz genérica.

Vale saber isso antes de escrever um esquema XSD ou uma expressão XPath contra o resultado. Adicionar uma segunda seção ao INI de origem muda silenciosamente o elemento raiz do resultado, e qualquer expressão de caminho escrita contra a primeira versão para de bater. Se a forma do documento importa adiante, decida o embrulho por conta própria e mantenha estável, em vez de deixar a contagem de seções decidir.

Todo valor de INI chega como texto, tipado por suposição

O INI não tem sistema de tipos nenhum: tudo à direita do sinal de igual é caractere. O leitor tenta adivinhar mesmo assim, transformando true e false em booleano e o que parece número em número, e o gravador de XML então imprime de volta como texto o que recebeu. Para a maioria das chaves a ida e volta é invisível.

Para algumas não é. Um valor escrito como 007 é lido como o número 7 e gravado de volta como 7. Uma chave de versão escrita 1.0 vira 1. Uma máscara hexadecimal escrita 0x1F sai como 31. Qualquer coisa com unidade junto sobrevive intacta, então 128M continua 128M, e o mesmo vale para endereço com ponto como 127.0.0.1 e horário como 08:00, porque nenhum dos dois é interpretado como um número único.

Chaves que não são nomes de elemento XML válidos

O XML é bem mais rígido com nomes do que o INI. Uma chave de INI pode ter espaço, barra, dois-pontos e colchete; um nome de elemento pode ter letra, número, sublinhado, hífen, ponto e pouco mais, e não pode começar com número. O gravador substitui por sublinhado cada caractere que não pode usar, e adiciona um sublinhado na frente de qualquer nome que comece com algo que não seja letra.

A substituição não é reversível, então duas chaves que diferem só na pontuação podem colidir no mesmo nome de elemento — "nível de log" e "nível-de-log" não colidem, porque o hífen é permitido, mas "nível de log" e "nível/log" viram os dois nivel_de_log. Se o seu INI tem chaves assim, renomeie na origem antes de converter, em vez de tentar descobrir depois qual elemento veio de qual linha.

Seção com ponto no nome continua sendo uma tag só

Um cabeçalho de seção escrito `[banco.conexoes]` parece que deveria virar aninhamento, e em TOML viraria. Aqui não vira: o leitor trata tudo entre os colchetes como um nome de seção único, então o resultado tem um elemento chamado banco.conexoes com as chaves dentro dele. Ponto é permitido em nome de elemento XML, então o documento é válido — só está plano onde talvez você esperasse profundidade.

Se o esquema de destino precisa de aninhamento de verdade, essa estrutura tem que ser criada, não convertida automaticamente. A sequência honesta é converter primeiro e depois reformar o XML resultante à mão ou com XSLT, porque um conversor que tentasse adivinhar aninhamento a partir de pontuação erraria em todo INI onde o ponto faz parte do nome, não de um separador.

O que um cabeçalho de seção repetido custa em silêncio

O INI não tem um padrão único, só convenções, e um dos pontos em que implementações discordam é o que um cabeçalho de seção repetido significa. Este leitor não mescla os dois blocos: cria uma seção nova e vazia toda vez que vê um cabeçalho, então um arquivo com `[log]` aparecendo duas vezes mantém só as chaves da segunda ocorrência e perde o primeiro bloco inteiro, sem erro nenhum.

Cabeçalhos repetidos são raros em arquivo escrito à mão e comuns em arquivo montado por concatenação — uma configuração base com uma camada de ambiente anexada por cima, um padrão de implantação real. Procure por cabeçalhos duplicados na origem antes de converter, porque a falha é silenciosa e o resultado é um XML perfeitamente bem formado, só que faltando configurações.

Os comentários do INI ficam para trás

Os dois formatos suportam comentário. O INI marca com ponto e vírgula ou cerquilha, o XML com um bloco entre colchetes angulares, e esta conversão não carrega nenhum dos dois: linhas de comentário são puladas na leitura e não reaparecem depois. Nenhum dos dois formatos tem culpa aqui — a perda é do processo, não uma limitação do destino.

Num arquivo de configuração isso importa mais do que parece. A linha acima de um tempo limite explicando que foi aumentado para 90 segundos por causa de um relatório lento costuma ser o único registro dessa decisão em algum lugar. Copie o original comentado para o controle de versão antes de converter, e reanexe as explicações no XML depois — nada numa conversão automática deste tipo faz isso por você.

O que o XML oferece que o INI nunca ofereceu

O motivo de fazer essa mudança quase nunca é a sintaxe. Ao redor do XML existe todo o ferramental que o INI nunca teve: esquemas XSD que rejeitam uma configuração com uma chave escrita errado antes mesmo da aplicação iniciar, XPath para puxar um valor de dentro de um documento grande, XSLT para reformar, assinatura digital para atestar que um arquivo de configuração não foi alterado.

Nada disso chega junto com a conversão. O resultado é um documento bem formado, sem esquema anexado e sem namespace declarado, e escrever o esquema é o trabalho de verdade — a conversão só entrega um documento de partida para escrever aquilo contra ele. Se você não pretende validar, assinar nem transformar o resultado, a migração está comprando verbosidade e nada mais.

Quando é melhor deixar o INI onde está

Se a aplicação que lê o arquivo é a mesma que o escreveu, e nada adiante precisa de esquema, converter é um custo sem retorno. Um INI é editável por qualquer pessoa que consegue abrir um bloco de notas, e essa é uma propriedade operacional real quando quem muda uma configuração às duas da manhã não é desenvolvedor.

A conversão também é a ferramenta errada se o que você precisa é de dois ou três valores do arquivo, não do arquivo inteiro. Leia esses valores direto da origem. Este conversor serve para o caso em que o INI é a configuração e a configuração inteira está mudando de formato, não para extrair um fragmento.

Como converter INI para XML

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

INI ou XML: o que muda

INI comparado com XML
INIXML
Nome completoConfiguração INIExtensible Markup Language
Extensão do arquivo.ini, .cfg, .conf.xml
Tipo de mídiatext/plainapplication/xml
Publicado pela primeira vez19851998
Publicado porW3C
EspecificaçãoXML 1.0
LicençaPadrão abertoPadrão aberto
Situação hojeAntigo, ainda lido em todo lugarAtual
Abre no navegadorNenhum navegadorTodos os navegadores
Considerado no lugarTOML, YAMLJSON, YAML

O que se mantém

Os comentários passam. INI e XML 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

XML abre em qualquer navegador atual. INI alcança ainda menos navegadores. Se o arquivo vai para uma página web ou um formulário, esse costuma ser todo o motivo da conversão.

INI é de 1985 e está praticamente superado. XML é o que os programas atuais escrevem, então converter também é uma forma de continuar conseguindo ler.

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

Para que serve cada formato

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

XML vem da W3C é de 1998, descrito em XML 1.0. Visual Studio Code e oXygen XML Editor leem o formato.

De INI para XML: perguntas frequentes

Meu arquivo INI é 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 INI para XML é 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 INI para XML?

Não. XML guarda o mesmo conteúdo sem jogar nada fora: o resultado é idêntico em qualidade ao original.

Preciso instalar alguma coisa para abrir um arquivo XML?

Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe Extensible Markup Language.

Mais sobre esses formatos