Pular para o conteúdo principal

YAML para XML

Este conversor renderiza mapeamentos e sequências YAML como XML no seu navegador. Mapeamentos se tornam elementos aninhados, sequências se tornam elementos repetidos e valores escalares se tornam conteúdo de texto, com chaves sanitizadas para nomes de tags válidos e texto escapado de acordo com XML 1.0. Uma chave prefixada com @ se torna um atributo. Nada é enviado.

Só local

YAML para XML: explicação

YAML e XML ambos expressam árvores, então a conversão é mostly vocabulário: um mapeamento se torna um elemento com filhos, uma sequência se torna um elemento repetido e um escalar se torna conteúdo de texto. A única coisa que o YAML não tem como dizer é um nome de elemento raiz — um documento XML precisa exatamente de um — então o conversor fornece <root> como o elemento do documento e aninha seu documento dentro dele. Uma lista de nível superior se torna <root> contendo um elemento repetido por item; um mapeamento de nível superior mantém suas chaves como nomes de elemento um nível abaixo.

O lado rígido do acordo são as regras de nome do XML, e o conversor as aplica em vez de esperar: cada chave se torna um nome de tag válido, com caracteres fora do conjunto permitido substituídos por underscores e um underscore inicial adicionado onde um nome começaria com um dígito. O texto é escapado de acordo com XML 1.0 na saída — &, < e > em conteúdo, mais as aspas duplas dentro de valores de atributo — então qualquer parser em conformidade com o padrão pode ler o resultado. Valores cruzam como seus caracteres exatos; não há etapa de coerção numérica para adivinhar uma porta ou uma string de versão.

Tudo é executado nesta aba do navegador. O YAML é parseado por um motor na página e o XML é serializado a partir do documento parseado; nada toca uma rede — abra DevTools, observe o painel de Rede permanecer silencioso, e a afirmação de privacidade se autovalida.

Fazer a viagem de volta leva um colar, porque o Conversor de XML para YAML lê as convenções @ e #text na direção oposta.

Se o lado de entrada é a metade instável — indentação, aspas, inferência de tipo — o Guia de noções básicas de YAML cobre as regras que este parser espera.

Como a conversão realmente funciona

O documento é parseado uma vez em dados simples, e o escritor de XML só vê esses dados — nunca o texto original. Essa separação é o que torna as regras abaixo previsíveis: o escritor não pode ser surpreso pela sintaxe YAML, e o parser não pode ser influenciado pelo que o XML vai parecer. Cada etapa tem uma tarefa e uma saída.

  • Parse: o YAML é lido em mapeamentos, sequências e escalares — o núcleo comum, com comentários permitidos e âncoras ou aliases fora do conjunto suportado.
  • Wrap: o documento é colocado dentro de um único elemento <root>, porque o XML exige exatamente um root e o YAML não tem nome para oferecer.
  • Render: mapeamentos aninham como elementos filhos, sequências se tornam elementos repetidos e valores escalares se tornam o conteúdo de texto do elemento nomeado por sua chave.
  • Escape e indent: texto recebe os três escapes obrigatórios do XML, atributos adicionalmente escapam aspas, e o documento é formatado com dois espaços por nível.

A política de nomes de tag, precisamente

Nomes XML 1.0 podem começar com letra, underscore ou dois-pontos e podem continuar com dígitos, hífens, pontos e dois-pontos; tudo o mais é proibido. Chaves YAML são mais livres que isso, então cada chave é verificada e reparada: um espaço se torna um underscore, um dígito inicial ganha um underscore inicial, e uma chave que já era válida — incluindo kebab-case como content-type — passa intacta. Notavelmente, um ponto é um caractere legal dentro de um nome XML, então uma chave como address.city se torna um único elemento chamado address.city aqui, não um par aninhado; o aninhamento é expresso pela estrutura YAML em si, não por pontuação na chave.

Chave YAMLElemento emitidoPorquê
role<role>já era legal — passou intacto
first name<first_name>espaço substituído por underscore
2fa<_2fa>nomes não podem começar com dígito
content-type<content-type>hífens são legais em nomes XML

Atributos, texto e a convenção @

YAML tem mapeamentos onde XML tem atributos, e a ponte é a mesma convenção que o conversor de XML para YAML do site usa ao contrário: uma chave começando com @ se torna um atributo de seu elemento, e a chave especial #text carrega o próprio texto do elemento quando ele também tem atributos ou filhos. Um registro escrito como {"@id": bk101, "#text": A guide} sai como <book id="bk101">A guide</book> quando colocado sob uma chave book. A convenção é opcional — chaves e valores simples não precisam dela — mas significa que a superfície completa do XML é alcançável a partir de dados YAML simples sem uma segunda sintaxe.

  • @sku: A-1 se torna o atributo sku="A-1" no elemento que o contém.
  • #text contém o próprio texto de um elemento, então atributos e conteúdo podem coexistir sem colidir.
  • Um valor null é omitido inteiramente; uma string vazia se torna um elemento auto-fechante, porque os dois são diferentes em YAML e a saída respeita isso.
  • Números e booleanos são convertidos para string — 8080 chega como o texto 8080, true como o texto true.

Casos que o conversor não vai disfarçar

Três entradas recebem erros nomeados ou comportamento documentado explícito em vez de um ombreiro. Recursos YAML que este parser deliberadamente não suporta — âncoras e aliases, chaves merge, diretivas — são rejeitados com um erro em vez de meio-implementados, porque um conversor que adivinha expansão de âncora inventa conteúdo. Um fluxo de múltiplos documentos converte usando seu documento final, documentado aqui em vez de deixado para descoberta. E um documento que é apenas um escalar ainda converte: ele se torna o texto dentro de <root>.

  • Âncoras, aliases e chaves merge: rejeitados com um erro nomeado, não expandidos por adivinhação.
  • Fluxos de múltiplos documentos: o último documento vence, e o comportamento é documentado aqui em vez de descoberto por acidente.
  • Tabs usados para indentação: rejeitados no parse, de acordo com as próprias regras do YAML.

Perguntas frequentes

Converter YAML para XML envia meu arquivo para algum lugar?

Não. Parsing e geração de XML ambos rodam dentro desta aba do navegador com JavaScript que foi carregado uma vez quando a página abriu. Não há rota API para enviar dados, e a Content-Security-Policy da página define connect-src 'self', então o próprio navegador recusaria qualquer solicitação de saída. Você pode verificar ambas as afirmações em DevTools: o painel de Rede não mostra nenhuma solicitação quando você converte.

Por que meu XML está envolto em um elemento <root>?

XML exige exatamente um elemento raiz, e YAML não oferece um nome para um — um arquivo YAML é só dados. O conversor portanto fornece <root> como o elemento do documento: uma sequência de nível superior se torna <root> com um elemento repetido por item, e um mapeamento de nível superior mantém suas chaves como elementos filhos um nível abaixo. Se você precisar de um nome de root diferente, coloque seus dados sob essa chave no YAML e ela se torna o elemento que você nomeou.

Como chaves YAML são transformadas em nomes de tag XML válidos?

Cada chave é verificada contra as regras de nome XML 1.0 e sanitizada apenas onde falha: caracteres fora de letras, dígitos, underscore, hífen, ponto e dois-pontos se tornam underscores, e um nome começando com dígito ganha um underscore inicial. Chaves que já eram válidas passam intactas. Um ponto é legal dentro de um nome XML, então address.city se torna um único elemento com esse nome — o aninhamento vem da estrutura YAML, não de pontos em chaves.

YAML pode produzir atributos XML e conteúdo de texto?

Sim, via a convenção @: uma chave começando com @ se torna um atributo de seu elemento, e a chave reservada #text carrega o próprio texto do elemento. Escrever "@id": bk101 sob uma chave book produz <book id="bk101">, e adicionar "#text": A guide coloca texto dentro. É a mesma convenção que o conversor de XML para YAML do site emite, então um documento pode cruzar formatos em ambas as direções sem renomear nada manualmente.

O que o conversor faz com números, booleanos e valores vazios?

Escalares são convertidos para string, porque XML texto não tem tipos: 8080 se torna o texto 8080 e true se torna o texto true, sem mudanças de formatação. Um valor null não produz elemento nenhum, enquanto uma string vazia produz um elemento auto-fechante — a distinção que o YAML faz é preservada na saída. Texto é escapado na saída (&amp;, &lt;, &gt;, e &quot; dentro de atributos), então parsers leem de volta exatamente os caracteres que você escreveu.

Quais recursos YAML o parser suporta?

O núcleo comum: mapeamentos, sequências, escalares simples e entre aspas, comentários, e os tipos escalares usuais. Âncoras e aliases, chaves merge e diretivas estão fora do conjunto suportado e são rejeitados com um erro nomeado em vez de adivinhados — expansão silenciosa de âncora inventaria conteúdo que nunca esteve no seu arquivo. Para um fluxo de múltiplos documentos, o documento final é o convertido, o que a página documenta em vez de deixar para descoberta.