ToolDeck

YAML a XML

Convierte YAML a formato XML

Prueba un ejemplo

Entrada YAML

Salida XML

Se ejecuta localmente · Es seguro pegar secretos
El XML aparecerá aquí…
También prueba:YAML a JSON

¿Qué es la conversión de YAML a XML?

La conversión de YAML a XML transforma datos escritos en YAML (YAML Ain't Markup Language) al formato XML (Extensible Markup Language). YAML usa indentación y puntuación mínima para representar datos estructurados, mientras que XML utiliza etiquetas de apertura y cierre con una jerarquía explícita. Convertir entre ambos formatos es una tarea habitual cuando sistemas que consumen XML necesitan recibir datos originalmente escritos en YAML.

YAML fue diseñado para la legibilidad humana. Los archivos de configuración de herramientas como Kubernetes, Ansible, Docker Compose y GitHub Actions se escriben en YAML porque es compacto y fácil de editar a mano. XML, definido por la especificación W3C XML 1.0, ha sido el formato de intercambio de datos predeterminado en sistemas empresariales, servicios web SOAP y flujos de trabajo centrados en documentos durante décadas. Cuando una configuración escrita en YAML debe alimentar un pipeline basado en XML, la conversión es necesaria.

La correspondencia entre YAML y XML no es uno a uno. YAML admite tipos de datos como booleanos, enteros, flotantes y nulos de forma nativa, mientras que XML trata todo el contenido como texto a menos que un esquema (XSD o DTD) defina los tipos externamente. Las secuencias (listas) de YAML no tienen un equivalente directo en XML y deben representarse como elementos repetidos. Conocer estas diferencias te ayuda a predecir la salida y evitar sorpresas.

¿Por qué usar este conversor de YAML a XML?

Reescribir manualmente YAML como XML es tedioso y propenso a errores, especialmente en estructuras profundamente anidadas. Este conversor gestiona la traducción estructural al instante.

Conversión instantánea
Pega tu YAML y obtén la salida XML formateada de inmediato. Sin necesidad de escribir un script ni instalar una herramienta de línea de comandos para conversiones puntuales.
🔒
Procesamiento con privacidad primero
Toda la conversión se ejecuta en tu navegador. Tus datos YAML, que suelen contener direcciones de servidor, credenciales y detalles de infraestructura, nunca abandonan tu máquina.
📋
Sin cuenta requerida
Usa el conversor sin registrarte, iniciar sesión ni proporcionar un correo electrónico. Abre la página y empieza a convertir.
🌐
Gestiona estructuras anidadas
Admite mapeos YAML profundamente anidados, secuencias, tipos mixtos y cadenas multilínea. La salida preserva la jerarquía con la indentación XML correcta.

Casos de uso de YAML a XML

Desarrollo frontend
Convierte datos de prueba YAML a formato XML para probar parsers XML, transformaciones XSLT o componentes que esperan respuestas XML de APIs.
Integración backend
Transforma configuración YAML a XML cuando integras con servicios Java heredados que usan configuración XML de Spring, archivos POM de Maven o endpoints SOAP.
DevOps y CI/CD
Convierte manifiestos YAML de Kubernetes o Ansible a XML para herramientas que requieren entrada XML, como configuraciones de pipelines de Jenkins o ciertos sistemas de monitorización.
QA y pruebas
Genera fixtures de prueba XML a partir de definiciones YAML. YAML es más fácil de mantener como datos de prueba, y convertir a XML en tiempo de prueba mantiene los fixtures legibles.
Ingeniería de datos
Convierte configuraciones ETL en formato YAML o definiciones de esquemas a XML para pipelines que consumen XML. Habitual en sanidad (HL7), finanzas (FpML) y sistemas de datos gubernamentales.
Aprendizaje y prototipado
Los estudiantes y quienes se inician pueden pegar YAML y ver la estructura XML equivalente en paralelo, lo que ayuda a desarrollar intuición sobre cómo los datos jerárquicos se corresponden entre formatos.

Referencia de correspondencia de tipos YAML a XML

Los tipos de datos YAML no se corresponden directamente con XML. Esta tabla muestra cómo se traduce cada construcción YAML a su equivalente XML. Conocer estas reglas te ayuda a predecir la salida y solucionar resultados inesperados.

Tipo YAMLEjemplo YAMLSalida 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: diferencias entre formatos

YAML y XML resuelven el mismo problema — la representación de datos estructurados — con diferentes compromisos. Ninguno es universalmente mejor; la elección correcta depende de quién o qué consume los datos.

YAML
Delimitado por espacios en blanco, sin etiquetas de cierre. Admite tipos nativos (bool, int, float, null). Comentarios con #. Compacto para configuración y edición humana. Parseable con bibliotecas como PyYAML, js-yaml y gopkg.in/yaml.
XML
Basado en etiquetas con pares de apertura/cierre explícitos. Todos los valores son texto por defecto; los tipos requieren un esquema (XSD). Admite atributos, espacios de nombres, contenido mixto e instrucciones de procesamiento. Parseable con la biblioteca estándar de todos los lenguajes principales.
CaracterísticaYAMLXML
SintaxisBasada en indentaciónBasada en etiquetas (&lt;etiqueta&gt;...&lt;/etiqueta&gt;)
Tipos de datosNativos (string, int, bool, null, float)Solo texto (el esquema añade tipos)
Comentarios# comentarios en línea<!-- comentarios en bloque -->
AtributosSin soporte nativoSí (&lt;etiqueta attr="val"&gt;)
Espacios de nombresNo admitidoSí (xmlns:prefijo)
Tamaño del archivoMenor (sin etiquetas de cierre)Mayor (etiquetas verbosas)

Ejemplos de código

Cómo convertir YAML a XML de forma programática en distintos lenguajes y entornos:

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>

Preguntas frecuentes

¿Pueden representarse las secuencias YAML en XML?
Sí, pero XML no tiene un tipo de lista nativo. Las secuencias YAML se convierten normalmente en elementos XML repetidos con el mismo nombre de etiqueta. Por ejemplo, una lista YAML bajo la clave "items" se convierte en múltiples elementos hijo &lt;item&gt;. Algunos conversores los envuelven en un elemento padre &lt;items&gt; para mayor claridad.
¿Qué ocurre con los comentarios YAML durante la conversión?
Los comentarios YAML (líneas que comienzan con #) se descartan durante la conversión. La mayoría de los parsers YAML eliminan los comentarios al construir la estructura de datos, por lo que no están disponibles para la salida XML. Si necesitas preservar los comentarios, necesitarías un parser YAML que los retenga, como ruamel.yaml en Python.
¿Cómo se gestionan los anclas y alias de YAML?
Los anclas de YAML (&nombre) y los alias (*nombre) se resuelven antes de la conversión. El parser expande los alias a sus valores completos, por lo que el XML resultante contiene los datos completos sin ninguna referencia a anclas. Esto significa que la salida XML puede ser mayor que la entrada YAML si se usaron anclas para evitar repeticiones.
¿Es la conversión reversible (de XML a YAML)?
Parcialmente. Puedes convertir XML a YAML, pero el resultado puede no coincidir exactamente con el YAML original. Los atributos XML no tienen equivalente en YAML y suelen representarse como claves especiales (p. ej., @atributo). La información de tipo también se pierde, ya que XML trata todo como texto, por lo que los números y booleanos del YAML original se convierten en cadenas tras la conversión de vuelta.
¿Cómo gestiono los atributos XML al convertir desde YAML?
YAML no tiene un concepto nativo de atributos. Una convención habitual es añadir el prefijo @ a las claves para indicar que deben convertirse en atributos XML en lugar de elementos hijo. Por ejemplo, "@id: 42" bajo un mapeo produciría &lt;elemento id="42"&gt;. Esta convención la usan bibliotecas como xml-js y xmltodict.
¿Cuál es el tamaño máximo de archivo YAML que puede gestionar esta herramienta?
El conversor se ejecuta en tu navegador, por lo que el límite depende de la memoria disponible en tu dispositivo. Los archivos de hasta unos pocos megabytes se convierten sin problemas en hardware moderno. Para archivos muy grandes (50 MB o más), usa una herramienta de línea de comandos como yq o un script Python con PyYAML y lxml, que gestionan el streaming y la memoria de forma más eficiente.
¿Por qué mi YAML produce una salida XML inválida?
La causa más común son claves YAML que no son nombres de elementos XML válidos. Los nombres de elementos XML no pueden comenzar con un número, contener espacios ni usar la mayoría de los caracteres especiales. Claves como "2nd-item" o "mi clave" producirán XML inválido. Renombra las claves problemáticas o usa un conversor que sanee los nombres automáticamente (p. ej., reemplazando espacios con guiones bajos y añadiendo un guion bajo como prefijo a los nombres que empiecen por número).