Saltar al contenido principal

YAML a XML

Este convertidor renderiza mapeos y secuencias de YAML como XML en tu navegador. Los mapeos se convierten en elementos anidados, las secuencias en elementos repetidos y los valores escalares en contenido de texto, con las claves saneadas para nombres de etiqueta válidos y el texto escapado según XML 1.0. Una clave con prefijo @ se convierte en un atributo. No se sube nada.

Solo local

YAML a XML: explicación

YAML y XML expresan ambos árboles, así que la conversión es mayormente de vocabulario: un mapeo se convierte en un elemento con hijos, una secuencia se convierte en un elemento repetido y un escalar se convierte en contenido de texto. La única cosa que YAML no tiene forma de expresar es un nombre de elemento raíz — un documento XML necesita exactamente uno —, así que el convertidor proporciona <root> como el elemento del documento y anida tu documento dentro de él. Una lista de nivel superior se convierte en <root> conteniendo un elemento repetido por ítem; un mapeo de nivel superior mantiene sus claves como nombres de elemento un nivel abajo.

La parte estricta del trato son las reglas de nombres de XML, y el convertidor las aplica en lugar de esperar: cada clave se convierte en un nombre de etiqueta válido, con caracteres fuera del conjunto permitido reemplazados por guiones bajos y se añade un guion bajo al inicio donde un nombre empezaría con un dígito. El texto se escapa según XML 1.0 a la salida — &, < y > en contenido, más la comilla doble dentro de valores de atributo — para que cualquier parser compatible con los estándares pueda leer el resultado. Los valores cruzan como sus caracteres exactos; no hay un paso de coerción numérica para adivinar un puerto o una cadena de versión.

Todo se ejecuta en esta pestaña del navegador. El YAML es parseado por un motor en la página y el XML es serializado desde el documento parseado; nada toca una red — abre DevTools, observa cómo el panel de red se queda en silencio, y la afirmación sobre privacidad se verifica por sí misma.

Comprobar el viaje de ida y vuelta requiere un solo pegado, porque el Convertidor de XML a YAML lee las convenciones @ y #text en la otra dirección.

Si el lado de entrada es la parte inestable — indentación, comillas, inferencia de tipos — el Guía básica de YAML explica las reglas que este parser espera.

Cómo funciona realmente la conversión

El documento se parsea una sola vez en datos planos, y el escritor de XML solo ve esos datos — nunca el texto original. Esa separación es lo que hace que las reglas de abajo sean predecibles: el escritor no puede ser sorprendido por la sintaxis de YAML, y el parser no puede ser influenciado por lo que se verá en el XML. Cada etapa tiene un trabajo y una salida.

  • Parsear: el YAML se lee en mapeos, secuencias y escalares — el núcleo habitual, con comentarios permitidos y anclajes o alias fuera del conjunto compatible.
  • Envolver: el documento se coloca dentro de un único elemento <root>, porque XML requiere exactamente una raíz y YAML no tiene nombre que ofrecer.
  • Renderizar: los mapeos anidan como elementos hijos, las secuencias se convierten en elementos repetidos, y los valores escalares se convierten en el contenido de texto del elemento nombrado por su clave.
  • Escapar e indentar: el texto recibe los tres escapes obligatorios de XML, los atributos adicionalmente escapan comillas, y el documento se imprime con formato con dos espacios por nivel.

La política de nombres de etiqueta, precisamente

Los nombres de XML 1.0 pueden empezar con una letra, guion bajo o dos puntos y pueden continuar con dígitos, guiones, puntos y dos puntos; todo lo demás está prohibido. Las claves de YAML son más libres que eso, así que cada clave se comprueba y repara: un espacio se convierte en guion bajo, un dígito inicial gana un guion bajo al inicio, y una clave que ya era legal — incluido kebab-case como content-type — pasa sin cambios. Notablemente, un punto es un carácter legal dentro de un nombre XML, así que una clave como address.city se convierte en un solo elemento llamado address.city aquí, no en un par anidado; el anidado se expresa mediante la estructura YAML misma, no por puntuación en la clave.

Clave YAMLElemento emitidoPor qué
role<role>ya legal — pasó sin cambios
first name<first_name>espacio reemplazado por un guion bajo
2fa<_2fa>los nombres no pueden empezar con un dígito
content-type<content-type>los guiones son legales en nombres XML

Atributos, texto y la convención @

YAML tiene mapeos donde XML tiene atributos, y el puente es la misma convención que usa el convertidor de XML a YAML del sitio en dirección inversa: una clave que empieza con @ se convierte en un atributo de su elemento, y la clave especial #text lleva el texto propio del elemento cuando también tiene atributos o hijos. Un registro escrito como {"@id": bk101, "#text": A guide} se convierte en <book id="bk101">A guide</book> cuando se coloca bajo una clave book. La convención es opcional — las claves y valores simples no la necesitan — pero significa que la superficie completa de XML es alcanzable desde datos YAML simples sin una segunda sintaxis.

  • @sku: A-1 se convierte en el atributo sku="A-1" en el elemento que lo contiene.
  • #text contiene el texto propio de un elemento, así que atributos y contenido pueden coexistir sin colisionar.
  • Un valor nulo se omite por completo; una cadena vacía se convierte en un elemento auto-cerrado, porque los dos son diferentes en YAML y la salida respeta eso.
  • Los números y booleanos se convierten a cadena — 8080 llega como el texto 8080, true como el texto true.

Bordes que el convertidor no tapará

Tres entradas reciben errores con nombre o comportamiento documentado explícito en lugar de un gesto de indiferencia. Características de YAML que este parser deliberadamente no soporta — anclajes y alias, claves de fusión, directivas — son rechazadas con un error en lugar de implementarse a medias, porque un convertidor que adivina la expansión de anclajes inventa contenido. Un flujo de múltiples documentos se convierte usando su documento final, documentado aquí en lugar de dejarlo al descubrimiento. Y un documento que es solo un escalar aún se convierte: se convierte en el texto dentro de <root>.

  • Anclajes, alias y claves de fusión: rechazados con un error con nombre, no expandidos por suposición.
  • Flujos de múltiples documentos: gana el último documento, y el comportamiento se documenta aquí en lugar de dejarlo al descubrimiento accidental.
  • Tabulaciones usadas para indentación: rechazadas en tiempo de parseo, según las propias reglas de YAML.

Preguntas frecuentes

¿Convertir YAML a XML sube mi archivo a algún sitio?

No. El parseo y la generación de XML se ejecutan dentro de esta pestaña del navegador con JavaScript que se cargó una sola vez cuando la página abrió. No hay una ruta de API a la que enviar datos, y la Content-Security-Policy de la página establece connect-src 'self', así que el navegador mismo rechazaría cualquier solicitud saliente. Puedes verificar ambas afirmaciones en DevTools: el panel de red no muestra ninguna solicitud cuando conviertes.

¿Por qué mi XML está envuelto en un elemento <root>?

XML requiere exactamente un elemento raíz, y YAML no ofrece nombre para uno — un archivo YAML es solo datos. El convertidor por lo tanto proporciona <root> como el elemento del documento: una secuencia de nivel superior se convierte en <root> con un elemento repetido por ítem, y un mapeo de nivel superior mantiene sus claves como elementos hijos un nivel abajo. Si necesitas un nombre de raíz diferente, pon tus datos bajo esa clave en el YAML y se convierte en el elemento que nombraste.

¿Cómo se convierten las claves de YAML en nombres de etiqueta XML válidos?

Cada clave se comprueba contra las reglas de nombres de XML 1.0 y se sanea solo donde falla: caracteres fuera de letras, dígitos, guion bajo, guion, punto y dos puntos se convierten en guiones bajos, y un nombre que empieza con un dígito recibe un guion bajo al inicio. Las claves que ya eran legales pasan sin cambios. Un punto es legal dentro de un nombre XML, así que address.city se convierte en un solo elemento de ese nombre — el anidado viene de la estructura YAML, no de puntos en las claves.

¿Puede YAML producir atributos XML y contenido de texto?

Sí, mediante la convención @: una clave que empieza con @ se convierte en un atributo de su elemento, y la clave reservada #text lleva el texto propio del elemento. Escribir "@id": bk101 bajo una clave book produce <book id="bk101">, y añadir "#text": A guide pone texto dentro. Es la misma convención que emite el convertidor de XML a YAML del sitio, así que un documento puede cruzar formatos en ambas direcciones sin renombrar nada a mano.

¿Qué hace el convertidor con números, booleanos y valores vacíos?

Los escalares se convierten a cadena, porque el texto XML no tiene tipos: 8080 se convierte en el texto 8080 y true en el texto true, sin cambios de formato. Un valor nulo no produce ningún elemento, mientras que una cadena vacía produce un elemento auto-cerrado — la distinción que hace YAML se preserva en la salida. El texto se escapa a la salida (&amp;, &lt;, &gt;, y &quot; dentro de atributos), así que los parsers leen exactamente los caracteres que escribiste.

¿Qué características de YAML soporta el parser?

El núcleo habitual: mapeos, secuencias, escalares simples y entrecomillados, comentarios, y los tipos escalares habituales. Anclajes y alias, claves de fusión y directivas están fuera del conjunto compatible y son rechazados con un error con nombre en lugar de ser adivinados — la expansión silenciosa de anclajes inventaría contenido que nunca estuvo en tu archivo. Para un flujo de múltiples documentos, el documento final es el que se convierte, lo que la página documenta en lugar de dejarlo al descubrimiento.