CodeKitHub
Herramientas JSON

Convertidor JSON ↔ XML

Última actualización:

Al convertir JSON a XML, cada clave se convierte en una etiqueta de elemento y cada valor se convierte en su contenido de texto — los objetos anidados se convierten en elementos anidados, los arreglos se convierten en elementos hermanos repetidos, y los atributos XML se mapean a claves `@_nombre` en JSON para que la conversión de ida y vuelta no pierda información. Esta herramienta realiza esa conversión, en ambas direcciones, directamente en tu navegador. Elige una dirección, pega tus datos y obtén un resultado correctamente anidado que puedes copiar o descargar.

¿Qué es esta herramienta?

XML y JSON son ambos formatos de datos en forma de árbol, pero aparecen en lugares distintos: las API empresariales heredadas, los servicios SOAP, los feeds RSS/Atom y muchos formatos de configuración todavía usan XML, mientras que las API REST modernas y el código JavaScript usan JSON casi exclusivamente. Esta herramienta traduce entre ambos formatos para que no tengas que escribir a mano ninguno de los dos al integrar sistemas antiguos y nuevos.

La conversión se basa directamente en la API DOMParser del navegador para leer XML, y sigue la estructura definida por la especificación W3C XML 1.0 para generarlo, de modo que el XML que produce está bien formado y el XML que acepta se analiza igual que lo haría un navegador o cualquier biblioteca XML compatible con los estándares.

Como XML tiene conceptos que JSON no tiene (atributos, contenido mixto de texto y elementos, un único elemento raíz obligatorio) y JSON tiene conceptos que XML no tiene (arreglos nativos, booleanos, números), la herramienta usa una convención documentada y ampliamente utilizada: un atributo XML `nombre="valor"` se convierte en la clave JSON `"@_nombre": "valor"`, el contenido de texto de un elemento se convierte directamente en su valor de cadena (cuando no tiene hijos ni atributos) o en una clave `"#text"` junto con los atributos, y los elementos hermanos repetidos con la misma etiqueta se convierten en un arreglo JSON.

¿Por qué utilizarlo?

  • Bidireccional: convierte JSON a XML o XML a JSON desde la misma pantalla.
  • Maneja correctamente el anidamiento: los objetos JSON anidados se convierten en elementos XML anidados y viceversa, a cualquier profundidad.
  • Los arreglos se mapean a elementos repetidos: un arreglo JSON bajo una clave se convierte en esa cantidad de elementos XML hermanos con la misma etiqueta, y las etiquetas XML repetidas vuelven como un arreglo JSON.
  • Los atributos XML se conservan usando la convención `@_nombreDeAtributo`, así que los datos de atributos no se pierden silenciosamente.
  • Copia al portapapeles o descarga como archivo .json o .xml.
  • 100% del lado del cliente: nada de lo que pegas se sube a ningún servidor.

Cómo utilizarlo

  1. Elige una dirección: "XML → JSON" o "JSON → XML".
  2. Pega tus datos en el cuadro de entrada.
  3. Haz clic en "Convertir".
  4. Revisa el resultado y luego cópialo o haz clic en "Descargar" para guardar un archivo.

Ejemplo

Entrada

{"user":{"name":"Alice","age":30}}

Resultado

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Alice</name>
  <age>30</age>
</user>

La única clave de nivel superior del JSON ("user") se convierte en el elemento raíz del XML; si el JSON tiene más de una clave de nivel superior, la herramienta envuelve todo en un elemento <root>, ya que XML requiere exactamente un elemento raíz.

Consejos prácticos

  • Migrar una configuración XML heredada (como el archivo de ajustes de una aplicación antigua) a un sistema moderno basado en JSON: pega el XML, conviértelo y ajusta los nombres de los campos según sea necesario.
  • Probar un endpoint SOAP o XML-RPC desde JavaScript: convierte aquí el cuerpo de tu solicitud JSON a XML antes de enviarlo, o convierte una respuesta XML de vuelta a JSON para inspeccionarla fácilmente.
  • Si tu JSON usa arreglos para datos que en XML se representarían como elementos repetidos, asegúrate de anidar primero el arreglo bajo una única clave (por ejemplo, {"items":{"item":[1,2,3]}}) en lugar de un arreglo de nivel superior desnudo, ya que XML no puede tener varios elementos raíz.

Por qué importa la convención de atributos @_

La parte más delicada de la conversión JSON/XML es que los elementos XML pueden llevar dos tipos de datos a la vez, atributos y contenido hijo, mientras que un objeto JSON simple solo tiene claves y valores. Sin una convención para mantenerlos separados, un convertidor ingenuo perdería los atributos por completo o los mezclaría con los elementos hijos de una forma que no se puede convertir de vuelta de manera confiable. La convención del prefijo `@_nombre` (también usada por bibliotecas ampliamente adoptadas en el ecosistema JavaScript) resuelve esto dando a los atributos una forma de clave distinta e inequívoca, de modo que `<product id="42">Widget</product>` se convierte limpiamente en ambas direcciones como `{"product":{"@_id":"42","#text":"Widget"}}` sin perder el id ni adivinar incorrectamente qué valor correspondía a qué.

Preguntas frecuentes

¿Qué pasa con un JSON que tiene más de una clave de nivel superior?

XML requiere un único elemento raíz, así que si tu objeto JSON tiene varias claves de nivel superior (por ejemplo, {"a":1,"b":2}), el resultado se envuelve en un elemento <root>: <root><a>1</a><b>2</b></root>. Si tu JSON tiene exactamente una clave de nivel superior, esa clave se convierte directamente en el nombre del elemento raíz.

¿Cómo se representan los atributos XML en JSON?

Un atributo como <user id="7"> se convierte en la clave "@_id": "7" dentro del objeto JSON resultante. Es una convención común y documentada (usada por bibliotecas como fast-xml-parser) que mantiene los atributos distinguibles de los elementos hijos.

¿Los elementos XML repetidos se convierten en un arreglo JSON?

Sí. Si un elemento tiene varios hijos con el mismo nombre de etiqueta, por ejemplo <items><item>1</item><item>2</item></items>, al convertir a JSON se obtiene {"items":{"item":["1","2"]}}. Al convertir ese JSON de nuevo a XML se reproducen los elementos <item> repetidos.

¿Se conservan los números y booleanos al convertir XML a JSON?

XML no tiene un concepto nativo de números o booleanos: todo es texto, así que el contenido de texto llega como una cadena JSON (por ejemplo, "30" en lugar de 30). Si necesitas tipos numéricos, deberás convertir esos campos después.

¿Se sube mi información a algún lugar?

No. El análisis y la conversión ocurren completamente en JavaScript dentro de tu navegador, usando la API integrada DOMParser: no se envía nada a un servidor, así que es seguro usarlo con archivos de configuración privados o datos internos de API.

Herramientas relacionadas