Converter XML para YAML

Aqui você converte XML para YAML 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 YAML funciona de um jeito diferente de XML. Não é a degradação gradual de um codec com perda: o que YAML 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 pom.xml fica sem as tags de fechamento

O XML gasta mais ou menos metade dos caracteres dizendo onde um elemento termina. O YAML diz isso com indentação, então o mesmo documento sai bem mais curto, e cada nível de aninhamento é um passo visual em vez de um par a procurar para casar. Num pom do Maven ou num web.config, essa é a diferença entre rolar a tela e ler.

A estrutura fica igual. Todo elemento vira uma chave, os filhos viram o mapeamento abaixo dela, e o texto vira o valor. Nada é reordenado e nada é resumido, então o que você está olhando é o mesmo documento com a pontuação removida — exatamente o que se quer quando o objetivo é entender o que o arquivo diz.

As chaves que chegam entre aspas, e por que precisam disso

Atributo atravessa como chave prefixada com @, e um elemento que carrega atributo e texto guarda esse texto sob a chave #text. Os dois vêm entre aspas, porque o YAML trata @ como um indicador reservado no início de um escalar simples e # como o início de um comentário.

Parece ruído e é correção. Se você editar o arquivo à mão, mantenha essas aspas: removê-las produz um YAML que ou não analisa ou, no caso de #text, silenciosamente transforma o resto da linha num comentário e perde o valor. O mesmo vale se você digitar uma chave de novo enquanto remodela a saída num arquivo de valores.

Usando o YAML para comparar duas versões de uma configuração

Este é o motivo mais forte para fazer a conversão. Comparar XML é infeliz porque uma mudança um nível abaixo aparece como várias linhas de tag, e reformatação por uma ferramenta reescreve o arquivo inteiro. Converter as duas versões e comparar o YAML mostra os valores mudados nas próprias linhas, com o caminho da chave visível acima deles.

Uma ressalva faz toda a diferença. Como um único elemento repetido vira um mapeamento e dois viram uma lista, uma versão que acrescentou uma segunda dependência muda a forma daquele galho e não só o conteúdo, então a comparação mostra o bloco inteiro como reescrito. Isso não é o conversor perdendo informação — é a forma de fato mudando — mas saber disso de antemão evita ler uma diferença grande como uma mudança grande.

Prefixo de espaço de nome, e os dois pontos dentro de uma chave

Prefixo é preservado como parte do nome da chave, então um documento usando soap: ou xsi: produz chaves contendo dois pontos. O gerador emite essas chaves sem aspas, e elas leem corretamente pelo mesmo analisador. As próprias declarações de espaço de nome sobrevivem como atributo, então um xmlns padrão chega como uma chave "@xmlns" entre aspas na raiz.

Dois pontos dentro de uma chave sem aspas é o tipo de coisa que vale apertar à mão antes de o arquivo viajar. Se o YAML vai ser lido por outra ferramenta, coloque aspas nessas chaves você mesmo — não custa nada e remove uma classe de problema que só aparece no ponto em que outra pessoa analisa o arquivo. Nada resolve prefixo para a URI de espaço de nome dele, então dois documentos usando prefixos diferentes para o mesmo espaço de nome produzem YAML que não compara limpo entre si.

O que continua string e o que silenciosamente vira número

Valores que se leem como número são analisados, tanto em texto de elemento quanto em atributo. Uma versão do Maven como 4.13.2 continua string, porque tem dois pontos e não pode ser um número, e o mesmo vale para um endereço ou um caminho. Um atributo de versão escrito 1.0 vira 1, e um valor com zero à esquerda escrito 007 vira 7.

Numa configuração que é lida em vez de executada, o dano se limita a como o valor parece, e ainda assim importa: uma versão de esquema renderizada como 1 em vez de 1.0 numa revisão é um valor que alguém vai questionar ou, pior, copiar. Escaneie os valores de aparência numérica na saída uma vez. Se o YAML vai para qualquer lugar além de um olho humano, coloque aspas nos que eram pensados como identificador.

Valor longo, texto de várias linhas e elemento vazio

Um valor contendo quebra de linha é escrito como um escalar de bloco — um caractere de barra vertical com o texto indentado abaixo — o que mantém legível em vez de escapar tudo numa linha só. Um valor longo de linha única é escrito como está, sem quebra. Os dois são as escolhas certas para um arquivo pensado para ser lido.

Um elemento vazio ou autofechado vira uma string vazia, escrita como um par de aspas. O XML não distingue um elemento vazio de um contendo nada, então nenhuma informação se perde, mas uma string vazia é visualmente fácil de passar batido num arquivo longo — se você está auditando uma configuração atrás de valor não definido, procure pelas aspas vazias em vez de confiar no olho.

Os comentários que esta conversão destrói

O XML aceita comentário, o YAML aceita comentário, e nenhum dos seus sobrevive. O analisador descarta e nada escreve de volta. Numa carga de dados isso é irrelevante; num arquivo de build é a maior perda isolada, porque o comentário acima de uma versão de dependência fixada costuma ser o único registro sobrevivente de por que ela foi fixada.

O arranjo de trabalho que evita a armadilha é tratar o YAML como uma cópia de leitura e manter o XML como a origem. Se o YAML em vez disso vai virar a origem — uma migração de verdade para o Ansible ou um chart do Helm — programe a passagem que copia os comentários como parte do trabalho, antes de o XML ser apagado e o raciocínio ir junto.

Remodelando a saída em algo que uma ferramenta aceite

Uma configuração convertida ainda não é um arquivo de valores nem um conjunto de variáveis. Ela carrega artefato de XML — as chaves @, as chaves #text, uma declaração de espaço de nome na raiz, e possivelmente uma chave ?xml da linha de declaração — que não significa nada para o que você está alimentando. Apagar isso é a primeira passagem.

A segunda é nomear. Nome de elemento XML costuma ser verboso de um jeito que fazia sentido com um esquema por trás, e uma configuração YAML normalmente quer nomes mais curtos e mais planos. As duas passagens são manuais e são a migração de verdade; a conversão só entrega um ponto de partida legível em vez de uma parede de tags.

Quando converter e quando deixar o XML como está

Converta quando o objetivo é entender, revisar ou comparar: o YAML é mais curto, a estrutura é óbvia, e tudo roda no seu navegador no tempo que leva para soltar o arquivo. É um bom hábito para qualquer arquivo de configuração que te entregaram e sobre o qual você precisa raciocinar antes de mudar.

Não converta quando o arquivo é validado por um esquema, assinado, ou consumido por uma ferramenta que lê XML. O XML é o artefato nesse caso, e uma cópia YAML é uma segunda versão da verdade que vai se desviar da primeira. Leia como YAML, mude como XML.

Como converter XML para YAML

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

XML ou YAML: o que muda

XML comparado com YAML
XMLYAML
Nome completoExtensible Markup LanguageYAML Ain't Markup Language
Extensão do arquivo.xml.yaml, .yml
Tipo de mídiaapplication/xmlapplication/yaml
Publicado pela primeira vez19982001
Publicado porW3C
EspecificaçãoXML 1.0YAML 1.2
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorTodos os navegadoresNenhum navegador
Considerado no lugarJSONJSON, TOML

O que se mantém

Os comentários passam. XML e YAML 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ê YAML. É 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 YAML, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

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.

YAML e de 2001, descrito em YAML 1.2. Visual Studio Code e yq leem o formato.

De XML para YAML: 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 YAML é 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 YAML?

XML e YAML 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 YAML abre no navegador?

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

Mais sobre esses formatos