ToolDeck

YAML para XML

Converte YAML para formato XML

Experimente um exemplo

Entrada YAML

Saída XML

Roda localmente · Seguro para colar segredos
O XML aparecerá aqui…
Veja também:YAML para JSON

O que é Conversão de YAML para XML?

A conversão de YAML para XML transforma dados escritos em YAML (YAML Ain't Markup Language) para XML (Extensible Markup Language). O YAML usa indentação e pontuação mínima para representar dados estruturados, enquanto o XML usa tags de abertura e fechamento com hierarquia explícita. Converter entre os dois é uma tarefa rotineira quando sistemas que consomem XML precisam receber dados originalmente escritos em YAML.

O YAML foi projetado para legibilidade humana. Arquivos de configuração de ferramentas como Kubernetes, Ansible, Docker Compose e GitHub Actions são escritos em YAML por ser compacto e fácil de editar manualmente. O XML, definido pela especificação W3C XML 1.0, tem sido o formato padrão de intercâmbio de dados em sistemas corporativos, serviços web SOAP e fluxos de trabalho orientados a documentos por décadas. Quando uma configuração escrita em YAML precisa alimentar um pipeline baseado em XML, a conversão é necessária.

O mapeamento entre YAML e XML não é um-para-um. O YAML suporta tipos de dados como booleanos, inteiros, floats e nulos de forma nativa, enquanto o XML trata todo o conteúdo como texto, a menos que um schema (XSD ou DTD) defina tipos externamente. Sequências YAML (listas) não têm equivalente direto em XML e devem ser representadas como elementos repetidos. Conhecer essas diferenças ajuda a prever a saída e evitar surpresas.

Por que Usar Este Conversor de YAML para XML?

Reescrever YAML como XML manualmente é tedioso e propenso a erros, especialmente para estruturas profundamente aninhadas. Este conversor realiza a tradução estrutural instantaneamente.

Conversão instantânea
Cole o YAML e obtenha a saída XML formatada imediatamente. Sem necessidade de escrever um script ou instalar uma ferramenta de linha de comando para conversões pontuais.
🔒
Processamento com privacidade em primeiro lugar
Toda a conversão é executada no seu navegador. Seus dados YAML — que frequentemente contêm endereços de servidores, credenciais e detalhes de infraestrutura — nunca saem da sua máquina.
📋
Sem conta necessária
Use o conversor sem se cadastrar, fazer login ou fornecer um e-mail. Abra a página e comece a converter.
🌐
Suporta estruturas aninhadas
Suporta mapeamentos YAML profundamente aninhados, sequências, tipos mistos e strings multilinhas. A saída preserva a hierarquia com indentação XML adequada.

Casos de Uso da Conversão YAML para XML

Desenvolvimento frontend
Converta dados mock em YAML para formato XML ao testar parsers XML, transformações XSLT ou componentes que esperam respostas XML de APIs.
Integração backend
Transforme configurações YAML em XML ao integrar com serviços Java legados que usam Spring XML config, arquivos Maven POM ou endpoints SOAP.
DevOps e CI/CD
Converta manifests YAML do Kubernetes ou Ansible em XML para ferramentas que requerem entrada XML, como configurações de pipeline do Jenkins ou determinados sistemas de monitoramento.
QA e testes
Gere fixtures de teste XML a partir de definições YAML. O YAML é mais fácil de manter como dados de teste, e converter para XML no momento do teste mantém os fixtures legíveis.
Engenharia de dados
Converta configurações de ETL em YAML ou definições de schema para XML em pipelines que consomem XML. Comum em saúde (HL7), finanças (FpML) e sistemas de dados governamentais.
Aprendizado e prototipagem
Estudantes e iniciantes podem colar YAML e ver a estrutura XML equivalente lado a lado, o que ajuda a desenvolver intuição sobre como dados hierárquicos se mapeiam entre formatos.

Referência de Mapeamento de Tipos YAML para XML

Os tipos de dados YAML não se mapeiam diretamente para XML. Esta tabela mostra como cada construção YAML se traduz para o equivalente XML. Entender essas regras ajuda a prever a saída e solucionar resultados inesperados.

Tipo YAMLExemplo YAMLSaída XML
Mapping (key: value){ name: Alice }<name>Alice</name>
Sequence (- item)- apple\n- banana<item>apple</item><item>banana</item>
Nested mappinguser:\n name: Alice<user><name>Alice</name></user>
Scalar (string)greeting: hello world<greeting>hello world</greeting>
Scalar (number)count: 42<count>42</count>
Scalar (boolean)active: true<active>true</active>
Nullvalue: null<value/>
Multiline stringbio: |\n Line one\n Line two<bio>Line one\nLine two</bio>

YAML vs XML: Diferenças entre Formatos

YAML e XML resolvem o mesmo problema — representação de dados estruturados — com diferentes trade-offs. Nenhum é universalmente melhor; a escolha certa depende de quem ou o que consome os dados.

YAML
Delimitado por espaços em branco, sem tags de fechamento. Suporta tipos nativos (bool, int, float, null). Comentários com #. Compacto para configuração e edição humana. Interpretado por bibliotecas como PyYAML, js-yaml e gopkg.in/yaml.
XML
Baseado em tags com pares explícitos de abertura/fechamento. Todos os valores são texto por padrão; tipos requerem um schema (XSD). Suporta atributos, namespaces, conteúdo misto e instruções de processamento. Interpretado pela biblioteca padrão de todas as principais linguagens.
FuncionalidadeYAMLXML
SintaxeBaseada em indentaçãoBaseada em tags (&lt;tag&gt;...&lt;/tag&gt;)
Tipos de dadosNativos (string, int, bool, null, float)Somente texto (schema adiciona tipos)
Comentários# comentários inline<!-- comentários em bloco -->
AtributosSem suporte nativoSim (&lt;tag attr="val"&gt;)
NamespacesNão suportadoSim (xmlns:prefix)
Tamanho do arquivoMenor (sem tags de fechamento)Maior (tags verbosas)

Exemplos de Código

Como converter YAML para XML de forma programática em diferentes linguagens e ambientes:

JavaScript (Node.js)
import { parseDocument } from 'yaml'
import { js2xml } from 'xml-js'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const data = parseDocument(yamlStr).toJSON()
const xml = js2xml({ root: data }, { compact: true, spaces: 2 })
console.log(xml)
// → <root>
// →   <server>
// →     <host>localhost</host>
// →     <port>8080</port>
// →     <ssl>true</ssl>
// →   </server>
// → </root>
Python
import yaml
import xml.etree.ElementTree as ET

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: secret
"""

data = yaml.safe_load(yaml_str)

def dict_to_xml(tag, d):
    elem = ET.Element(tag)
    for key, val in d.items():
        child = ET.SubElement(elem, key)
        if isinstance(val, dict):
            child.extend(dict_to_xml(key, val))
            elem.remove(child)
            elem.append(dict_to_xml(key, val))
        else:
            child.text = str(val)
    return elem

root = dict_to_xml('root', data)
ET.indent(root, space='  ')
print(ET.tostring(root, encoding='unicode'))
# → <root>
# →   <database>
# →     <host>db.example.com</host>
# →     <port>5432</port>
# →     ...
# →   </database>
# → </root>
Go
package main

import (
    "encoding/xml"
    "fmt"
    "gopkg.in/yaml.v3"
)

type Server struct {
    XMLName xml.Name `xml:"server"`
    Host    string   `yaml:"host" xml:"host"`
    Port    int      `yaml:"port" xml:"port"`
    SSL     bool     `yaml:"ssl"  xml:"ssl"`
}

func main() {
    yamlData := []byte("host: localhost\nport: 8080\nssl: true")

    var s Server
    yaml.Unmarshal(yamlData, &s)

    xmlBytes, _ := xml.MarshalIndent(s, "", "  ")
    fmt.Println(xml.Header + string(xmlBytes))
    // → <?xml version="1.0" encoding="UTF-8"?>
    // → <server>
    // →   <host>localhost</host>
    // →   <port>8080</port>
    // →   <ssl>true</ssl>
    // → </server>
}
CLI (yq + xq)
# Using yq (YAML processor) with xq (XML wrapper around jq)
# Install: pip install yq

# Convert YAML file to XML
yq -x . config.yaml
# → <host>localhost</host><port>8080</port>

# Pipe inline YAML through conversion
echo "name: Alice" | yq -x .
# → <name>Alice</name>

Perguntas Frequentes

Sequências YAML podem ser representadas em XML?
Sim, mas o XML não tem tipo de lista nativo. Sequências YAML são tipicamente convertidas para elementos XML repetidos com o mesmo nome de tag. Por exemplo, uma lista YAML sob a chave "items" torna-se múltiplos elementos filhos &lt;item&gt;. Alguns conversores os envolvem em um elemento pai &lt;items&gt; para maior clareza.
O que acontece com comentários YAML durante a conversão?
Comentários YAML (linhas começando com #) são descartados durante a conversão. A maioria dos parsers YAML remove os comentários ao construir a estrutura de dados, portanto eles não ficam disponíveis para a saída XML. Se precisar preservar comentários, será necessário um parser YAML que os retenha, como ruamel.yaml em Python.
Como âncoras e aliases YAML são tratados?
Âncoras YAML (&nome) e aliases (*nome) são resolvidos antes da conversão. O parser expande os aliases para seus valores completos, de modo que o XML resultante contém os dados completos sem nenhuma referência de âncora. Isso significa que a saída XML pode ser maior que a entrada YAML se âncoras foram usadas para evitar repetição.
A conversão é reversível (XML de volta para YAML)?
Parcialmente. É possível converter XML para YAML, mas o resultado pode não corresponder exatamente ao YAML original. Atributos XML não têm equivalente em YAML e são tipicamente representados como chaves especiais (por exemplo, @atributo). Informações de tipo também são perdidas, pois o XML trata tudo como texto, então números e booleanos do YAML original tornam-se strings após uma conversão de ida e volta.
Como lidar com atributos XML ao converter a partir de YAML?
O YAML não tem conceito nativo de atributos. Uma convenção comum é prefixar chaves com @ para indicar que devem se tornar atributos XML em vez de elementos filhos. Por exemplo, "@id: 42" em um mapeamento produziria &lt;elemento id="42"&gt;. Essa convenção é usada por bibliotecas como xml-js e xmltodict.
Qual é o tamanho máximo de arquivo YAML que esta ferramenta suporta?
O conversor é executado no seu navegador, portanto o limite depende da memória disponível no seu dispositivo. Arquivos de até alguns megabytes convertem sem problemas em hardware moderno. Para arquivos muito grandes (50 MB+), use uma ferramenta de linha de comando como yq ou um script Python com PyYAML e lxml, que lidam com streaming e memória de forma mais eficiente.
Por que meu YAML produz saída XML inválida?
A causa mais comum são chaves YAML que não são nomes de elemento XML válidos. Nomes de elemento XML não podem começar com número, conter espaços ou usar a maioria dos caracteres especiais. Chaves como "2nd-item" ou "minha chave" produzirão XML inválido. Renomeie as chaves problemáticas ou use um conversor que higienize os nomes automaticamente (por exemplo, substituindo espaços por underscores e adicionando um underscore antes de nomes que começam com número).