araç köşesi

Convertir JSON a XML

Transforme datos JSON en un documento XML; usted nombra la raíz y las claves no válidas se adaptan sin perder nada

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

Pegue el JSON en el panel izquierdo; el XML aparece a la derecha mientras escribe. XML exige un único elemento raíz, así que todo su JSON se envuelve en el elemento cuyo nombre usted escribe: el «root» por defecto sirve, pero si prepara un documento de pedidos, escribir «pedido» deja la salida lista para usar. Las claves de objeto se convierten en nombres de elemento; las listas se escriben como elementos repetidos, bien con el nombre fijo <item>, bien con el singular del campo padre (la lista «productos» sale como elementos <producto>). Un nombre de elemento XML no puede empezar por un número ni llevar espacios o paréntesis: una clave como «año 2024» no se rompe en silencio, se convierte en «año_2024», y la línea de resultado indica cuántas claves se adaptaron y cuáles. Los caracteres & < > " ' del texto se escapan, un valor null pasa a elemento vacío (<x/>) y una cadena vacía queda como <x></x> — son dos cosas distintas. Si el JSON no es válido, se indican la línea y la columna del problema. Copie el resultado con un clic o descárguelo como archivo .xml.

Esta herramienta también se busca como convertir json a xml, json a xml, json to xml, generar xml, transformar json en xml.

¿Qué es Nombre de elemento XML?

El nombre de elemento es la palabra escrita entre los signos angulares, la que da nombre al dato: el elemento <precio> se llama «precio». Sus reglas son estrictas y no admiten excepciones: empieza por letra o guion bajo, no contiene espacios, no puede empezar por un número y no acepta paréntesis, barras ni signos de porcentaje. Los números, guiones y puntos sí son libres en el resto del nombre: «precio-2024» es válido, «2024-precio» no. Las letras con tilde y la eñe no están fuera de la ley; «año» y «diseño» son nombres válidos. Por eso una clave JSON no siempre necesita adaptarse al pasar a XML — pero si lleva un espacio o empieza por número, la adaptación es obligatoria.

¿Qué es Elemento raíz (root element)?

El elemento raíz es el elemento más externo — y único — de un documento XML; todos los datos del documento viven dentro de él. La regla de la cima única es formal, pero sus consecuencias son muy concretas: no puede pegar dos objetos uno debajo del otro y llamarlo archivo XML, necesita un elemento que los envuelva. JSON no tiene esa obligación: una lista sola ya es un documento válido. En la conversión el nombre de la raíz lo escribe usted, porque el nombre correcto depende de los datos: un documento de factura espera «factura», un listado de productos espera «productos», y el sistema receptor suele buscar ese nombre por su nombre.

¿Dónde se nota la diferencia entre JSON y XML en esta conversión?

La diferencia se concentra en tres decisiones. Primero la raíz: un JSON empieza donde quiere, XML exige un único elemento en la cima — por eso la pantalla le pide un nombre de raíz. Después las listas: en JSON el corchete basta para decir «lista»; en XML una lista solo se expresa con elementos hermanos repetidos, así que hay que decidir su nombre, y ese nombre marca la legibilidad de la salida. Por último los tipos: JSON distingue número, texto y booleano; en XML todo es texto y el tipo solo llega desde un esquema externo (XSD) — la diferencia entre 1024 y "1024" se pierde en esta conversión. A cambio, XML aporta lo que JSON no tiene: atributos, espacios de nombres y validación por esquema, las piezas que hacen oficial un documento. Esa es la razón por la que muchas integraciones públicas y de empresa siguen pidiendo XML.

¿Por qué se le pide un nombre de elemento raíz?

Un JSON puede empezar con un objeto o con una lista; XML no lo acepta. Todo documento XML debe tener un único elemento en la cima — un segundo elemento arriba invalida el documento. Por eso, sea cual sea su JSON, todo se mete dentro de un solo elemento y el nombre lo pone usted.

Elija el nombre según el uso: si el sistema que recibirá la salida espera <pedidos>, escriba «pedidos» en la casilla. El nombre que escriba también se ajusta a las reglas de los nombres de elemento — «lista de pedidos» saldrá como «lista_de_pedidos», porque un nombre XML no lleva espacios.

La trampa de las listas: en XML no existe el tipo «lista»

En JSON, el corchete dice por sí solo «esto es una lista». XML no tiene ninguna señal equivalente; una lista se expresa con elementos hermanos que llevan el mismo nombre, uno tras otro. La decisión más discutida de esta conversión está justo ahí: ¿cómo llamar a esos elementos hermanos?

Las dos opciones son habituales: el nombre fijo «item» se repite igual en todas las listas y es fácil de leer para una máquina; el singular del campo padre hace el documento legible para una persona («producto» dentro de «productos»). El corte funciona con los plurales en -s; si el singular no se puede deducir, la herramienta vuelve a item, porque <data><data> confunde a quien lo lee.

Esto tiene una consecuencia: una lista de un solo elemento, convertida a XML y leída de vuelta, deja de ser una lista y pasa a ser un objeto. XML no lleva la información «esto es siempre una lista»; solo vive en un esquema (XSD). Si su código lee la salida, contemple también el caso del elemento único.

Las claves no válidas no se rompen en silencio

Las reglas de un nombre de elemento XML son estrictas y las claves JSON las incumplen a menudo. La herramienta adapta el nombre y anuncia en la línea de resultado cuántas claves cambiaron y cuáles; así revisa la salida sin sorpresas.

  • Nombre que empieza por número → guion bajo delante: «2024» → «_2024» (quitar el número habría perdido información)
  • Espacio, paréntesis, barra y demás caracteres no permitidos → guion bajo: «precio (EUR)» → «precio__EUR_»
  • Los dos puntos también pasan a guion bajo: nada de referencias a un prefijo de espacio de nombres inexistente
  • Los nombres que empiezan por «xml» están reservados por la norma → se les añade un guion bajo delante
  • Clave vacía («») → recibe el nombre «alan»; para la raíz se usa «root»
  • Las letras con tilde y la eñe se quedan como están: «año» es un nombre de elemento XML válido y no se adapta

Límites del alcance: atributos, espacios de nombres y esquema

Esta herramienta traduce el modelo de datos del JSON a elementos; no genera por su cuenta las estructuras de XML que no existen en JSON. Los límites están escritos aquí, claros:

  • No se generan atributos: cada clave se vuelve un elemento; si necesita una salida como <producto codigo="ES-11">, tendrá que retocar el XML a mano
  • No se añade ninguna declaración de espacio de nombres (xmlns); si su documento la exige, escríbala usted en el elemento raíz
  • No se produce esquema (XSD) ni DTD; la salida es XML bien formado, y su «validez» se comprueba después contra el esquema de destino
  • Los números y los booleanos se escriben como texto: XML no lleva tipos, la diferencia entre true y "true" solo la sostiene un esquema
  • Los caracteres de control que XML nunca acepta se eliminan, y cuántos se eliminaron se indica en la línea de resultado

Preguntas frecuentes

¿Por qué se cambian los nombres de las claves de mi JSON?

Un nombre de elemento XML no puede empezar por un número ni contener espacios ni la mayoría de los signos de puntuación. Una clave que incumpla esas reglas, escrita tal cual, haría el documento imposible de analizar. La herramienta vuelve válido el nombre y escribe en la línea de resultado cuántas claves cambiaron y cómo; ningún cambio se hace en silencio.

¿Puedo generar XML con atributos?

No, cada clave JSON se convierte en un elemento. El motivo es que en JSON no existe el concepto de atributo: solo el esquema de destino sabe qué campo debería serlo. Si necesita atributos, descargue la salida y retoque a mano las líneas correspondientes.

¿Por qué una lista de un elemento no vuelve como lista al leerla de nuevo?

En XML, un elemento suelto y una lista de un solo elemento se ven exactamente iguales; la diferencia solo la marca un esquema (XSD), y esta salida no lo lleva. Si un campo debe ser lista en todos los casos, añada esa comprobación en el código que lee la salida.

¿El JSON que pego se envía a un servidor?

No. El análisis y la generación del XML se hacen por completo en su navegador; aunque pegue un fichero de clientes, un listado de pedidos o una respuesta de API, los datos no salen de esta página ni se guardan en ningún sitio.