Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
Aqui você converte XML para INI 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.
Até 100 arquivos de uma vez. Formatos misturados não são problema.
Eles são convertidos um após o outro e baixados juntos em um ZIP.
XML para INI
O achatamento constrói um caminho pontuado até cada valor do documento, depois divide cada caminho uma vez: a parte antes do primeiro ponto vira a seção, o resto vira a chave. Um documento XML tem um elemento raiz só, então esse primeiro segmento é o mesmo para todo valor do arquivo, e a saída é uma seção só com uma lista longa de chaves pontuadas dentro.
Vale ajustar a expectativa nisso, porque não é o que a mesma conversão faz a partir de YAML ou JSON, onde várias chaves de nível superior dão várias seções. Se você quer uma seção por grupo lógico, a rota prática é converter os fragmentos separadamente — uma conversão por filho da raiz — em vez de esperar que a ferramenta escolha qual nível merece um cabeçalho.
Pegue a forma padrão do .NET: uma raiz de configuração, um elemento de configurações de aplicativo, e dentro dele vários elementos carregando atributos de chave e valor. A saída é uma seção chamada `configuration`, e dentro dela chaves terminando em `@key` definidas como o nome da configuração e `@value` com o valor, depois o mesmo padrão com o próximo índice para a próxima entrada.
É fiel e não é bonito. A informação que você realmente queria fica espalhada por duas linhas relacionadas só pelo índice compartilhado. Se o destino é um script, geralmente é menos trabalho ler as duas linhas e escrever a chave e o valor você mesmo do que ensinar o consumidor essa forma. A conversão é mais útil quando o XML tem nomes de elemento reais guardando valores reais.
Todo atributo vira um segmento de chave prefixado com @, então um elemento com atributo de id contribui com uma chave terminando `@id`. Um elemento que carrega atributos e seu próprio texto guarda esse texto sob um segmento chamado `#text`, já que os atributos já ocuparam a chave do elemento.
Nenhum prefixo é uma convenção padrão do INI, e nenhum interpretador de INI vai tratá-los de forma especial. Eles existem para nada colidir — um atributo chamado `value` e um elemento filho chamado `value` de outra forma escreveriam na mesma chave — e são a primeira coisa a remover se o arquivo vai para um programa em vez de ser lido por uma pessoa.
Dois ou mais irmãos com a mesma tag viram um array durante a interpretação e ganham segmentos numéricos: `add.0`, `add.1`, `add.2`, na ordem do documento. A ordem é preservada, a parte que importa para uma lista de regra ou caminho de busca.
Uma única ocorrência não ganha número, porque o interpretador não tinha como saber que o elemento se repete — um elemento sozinho é só um objeto. Então a mesma configuração com uma entrada e com duas produz nomes de chave diferentes, e um script buscando `appSettings.add.0.@key` não encontra nada no dia em que o arquivo tem uma única configuração. Escreva o consumidor para tentar os dois formatos, ou normalize as chaves depois de converter.
Duas coisas na saída descrevem o XML em vez das suas configurações. Um documento que abre com uma declaração de versão e codificação produz uma seção chamada `?xml` guardando esses valores, e qualquer declaração de namespace na raiz vira uma chave como `@xmlns` dentro da seção principal. Nenhum dos dois significa nada para um consumidor de INI.
Apague os dois. Um cabeçalho de seção contendo um ponto de interrogação é legal no sentido de que o INI não tem especificação para violar, mas ainda vai confundir a próxima pessoa e possivelmente o interpretador que o lê. O valor de codificação também vale ignorar em vez de confiar: um atributo lendo `1.0` é interpretado como número e sai como `1`.
Um bloco de licença, um script embutido ou uma descrição formatada é um elemento guardando várias linhas de texto, e uma entrada de INI é uma linha. Isso costumava causar um bug real: linhas depois da primeira ficavam no arquivo sem chave na frente — descartadas na volta, ou pior, uma linha parecida com um cabeçalho de seção abria uma seção que não existia no XML original.
O escritor agora envolve esse valor entre aspas e escreve cada quebra de linha como uma barra invertida seguida de n, então o elemento continua sendo uma entrada só e volta intacto por este conversor. Ainda vale saber quais elementos do XML têm texto multilinha, porque o programa que você está alimentando pode ler a barra invertida literalmente. Onde isso importa, coloque o bloco num arquivo próprio e deixe o INI carregar o caminho até ele.
Mais do que você esperaria. Valores mantêm ponto e vírgula, barra, espaço e sinal de igual embutido, porque interpretadores de INI dividem só no primeiro sinal de igual — então uma string de conexão como `Server=db;Database=x` sobrevive como um único valor e volta correta.
A ordem dos elementos é preservada durante todo o processo, assim como a posição relativa de atributos e filhos. Valores com aparência numérica são interpretados na entrada, o que é onde ficam as exceções: um atributo de versão escrito `1.0` vira `1` e um identificador com zero à esquerda escrito `007` vira `7`. Qualquer coisa que você tratava como um código opaco vale conferir na saída.
Comentários são descartados, e num arquivo de configuração isso costuma ser o texto mais valioso presente. Namespaces param de significar qualquer coisa assim que os prefixos viram só caracteres num nome de chave. A distinção entre um atributo e um elemento filho sobrevive só como um @ numa string. Nada no INI pode ser validado, porque o INI não tem linguagem de esquema nenhuma.
Esse é o resumo honesto da direção: o XML é uma recomendação do W3C desde 1998 e carrega esquema, transformação e assinatura; o INI existe desde 1985 e carrega só linhas. Converter numa direção perde tudo isso e não existe caminho de volta, então o XML original pertence ao controle de versão independente do que acontecer com o INI.
Muita gente que chega neste par quer um punhado de configurações, não um documento achatado inteiro. Se é o seu caso, leia elas do XML e digite no arquivo INI na forma que o programa consumidor espera. Leva minutos, o resultado é legível, e nenhum dos artefatos acima aparece nele.
Use o conversor quando o arquivo é grande o suficiente para ler à mão ser onde os erros nascem, ou quando você quer um inventário completo do que uma configuração de fornecedor contém antes de decidir quais partes importam. Os dois são bons motivos. Converter uma configuração XML por completo e enviar o resultado como o novo arquivo de configuração não é.
| XML | INI | |
|---|---|---|
| Nome completo | Extensible Markup Language | Configuração INI |
| Extensão do arquivo | .xml | .ini, .cfg, .conf |
| Tipo de mídia | application/xml | text/plain |
| Publicado pela primeira vez | 1998 | 1985 |
| Publicado por | W3C | — |
| Especificação | XML 1.0 | — |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Antigo, ainda lido em todo lugar |
| Abre no navegador | Todos os navegadores | Nenhum navegador |
| Considerado no lugar | JSON, YAML | TOML, YAML |
Os comentários passam. XML e INI 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.
Nenhum navegador lê INI. É 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 INI, então dá para comparar o resultado com o original sem um segundo programa.
Os dois miram trabalhos diferentes: XML em mover dados entre programas, INI 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.
INI e de 1985. Notepad e Visual Studio Code leem o formato.
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.
É. 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.
XML e INI 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. O INI não tem aninhamento. Tudo abaixo de um nível é achatado em chaves separadas por ponto.
Nenhum navegador lê INI. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.