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.
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 YAML | Elemento emitido | Porquê |
|---|---|---|
| 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 (&, <, >, e " 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.
Quais ferramentas relacionadas devo usar a seguir?
- XML para YAMLConversor que roda no seu navegadorAbrir
- Noções básicas de YAMLGuia em linguagem simplesAbrir
- JSON vs XMLComparação lado a ladoAbrir
- Converter JSON em XMLConverte com atributos e nomes que o XML aceitaAbrir
- Converter XML em JSONConverte sem perder atributos nem listas de um itemAbrir
- Formatar JSONIndenta, ordena chaves e remove comentáriosAbrir