Conversor de XML a JSON

Convierte datos XML a JSON. Transforma respuestas de APIs XML antiguas, payloads SOAP o feeds RSS/Atom en JSON —los atributos van en @attributes, el texto en #text, los elementos repetidos se vuelven arrays— directo en tu navegador.

Convertir XML en JSON

Hay ocasiones en que uno quiere ver el contenido de una API XML heredada, de un intercambio SOAP o de un canal RSS o Atom con la forma de JSON a la que está acostumbrado. Esta herramienta convierte el XML que usted pega y remata todo el trabajo dentro del navegador, de modo que nada de lo que pegue sale jamás de su equipo.

**Hace falta un conjunto de convenciones precisamente porque XML y JSON guardan los datos de maneras radicalmente distintas.** El XML distingue los atributos del texto y admite que un elemento del mismo nombre aparezca cuantas veces haga falta; el JSON no tiene ninguna de las dos cosas. Por eso los atributos se colocan bajo `@attributes`, la cadena que un elemento sostiene directamente bajo `#text`, y los elementos repetidos se vuelven arreglos. **Lo que no puede esquivarse es la ambigüedad que surge cuando un elemento repetible aparece una sola vez.** En el XML original sigue siendo una aparición de algo repetible, pero en JSON parece un valor único, así que el código receptor es más seguro si se escribe para atender tanto a un elemento como a muchos.

Cómo se usa

  1. Pegue el XML Una respuesta SOAP o un canal RSS entran exactamente como están.
  2. Revise la conversión **Los atributos se asientan bajo la clave `@attributes` y el texto bajo `#text`.**
  3. Compare las estructuras Puesto junto al XML original, puede confirmar qué elemento acabó bajo qué clave.
  4. Copie o descargue el resultado Péguelo directamente en su código o guárdelo como archivo.

Consejos para aprovecharla mejor

  • Los elementos con atributos se agrupan en un objeto `@attributes`, separado del texto o los elementos hijos propios del elemento.
  • Cuando un elemento mezcla atributos con elementos hijos o texto, la parte del texto se guarda bajo `#text`, así nunca se confunde con un valor de atributo.
  • Los elementos hermanos que comparten el mismo nombre se agrupan automáticamente en un array: tres etiquetas `` se convierten en un array de 3 elementos, mientras que una sola queda como un objeto simple.
  • Un elemento vacío sin atributos, texto ni hijos (por ejemplo ``) se convierte en `null`.
  • Los prefijos de espacio de nombres como `xmlns` no se separan: un elemento sigue con la clave `ns:tag`, prefijo incluido.

Cuándo resulta útil

Al conectar una API XML a código que solo entiende JSON

Cuando el lado receptor no maneja más que JSON, puede fijar de antemano la forma convertida.

Al analizar un canal RSS o Atom

Convertir las entradas del canal a JSON las hace mucho más fáciles de recorrer con un script tal como están.

Al leer el contenido de una respuesta SOAP

**El SOAP, difícil de leer por su anidamiento y sus espacios de nombres, se sigue mucho mejor una vez desplegada la jerarquía como JSON.**

Al construir datos para pruebas

Puede derivar un simulacro en JSON a partir de una respuesta XML real.

Términos de la convención de conversión

@attributes
**La clave que alberga los atributos de un elemento XML.** Como el JSON no conoce la noción de atributo, se les concede una clave propia.
#text
La clave que alberga la cadena que un elemento sostiene directamente. Se vuelve necesaria en un elemento que tiene a la vez atributos y elementos hijos.
Elemento repetido
Un elemento que aparece más de una vez con el mismo nombre. **En JSON se vuelve un arreglo, pero una aparición solitaria figura como valor único y no como arreglo de un solo elemento.**
Prefijo de espacio de nombres
La parte `soap:` de `soap:Body`. En JSON sobrevive intacta como parte del nombre de la clave.
Contenido mixto
Texto y elementos hijos conviviendo dentro de un mismo elemento. **El JSON no tiene una estructura equivalente, y es aquí donde más fácilmente se pierde información al convertir.**
Elemento raíz
El único elemento situado en la cima del XML. Se convierte en la clave más externa del JSON.

Preguntas frecuentes

Los atributos de cada elemento se agrupan en una clave `@attributes` que contiene un objeto. Por ejemplo, `` se convierte en `{"@attributes": {"category": "fiction"}, ...}`, separado del valor propio del elemento (su texto o hijos) para que nunca se confundan.

Cuando elementos hermanos bajo el mismo padre comparten un nombre, se agrupan automáticamente en un array. Por ejemplo, dos etiquetas `` producen una clave `book` cuyo valor es un array de 2 elementos; una sola `` queda como un objeto simple.

La causa más común es una etiqueta de cierre faltante o que no coincide (se cierra con un nombre distinto al de apertura). El XML también requiere exactamente un elemento raíz, así que pegar varios elementos de nivel superior como `......` también fallará.

Esta herramienta solo admite la dirección de XML a JSON. Si necesitas formatear o validar JSON o XML por separado, consulta las otras herramientas de formato de este sitio.

Los prefijos de espacio de nombres se mantienen tal cual, sin separarlos, así que un elemento sigue con la clave `ns:tag`. No se resuelve el espacio de nombres (asociar el prefijo con su URI), así que un XML con espacios de nombres complejos puede no convertirse en la estructura esperada.
Tool-kun

A propósito — Por qué no existe una única forma "correcta" de convertir XML a JSON

A diferencia de la simple correspondencia fila-a-objeto entre CSV y JSON, no existe una convención universalmente aceptada para convertir entre XML y JSON. XML permite que atributos, nodos de texto y elementos hijos coexistan dentro de un mismo elemento, mientras que JSON solo tiene pares clave-valor simples, así que hay que elegir alguna convención en el momento de la conversión. Implementaciones importantes como xml2json, xml-js y org.json han adoptado cada una reglas distintas sobre cómo representar los atributos y cómo tratar el texto que coexiste con elementos hijos.

Aun así, los desarrolladores siguen encontrándose con XML con frecuencia. Las APIs web basadas en SOAP, integraciones de sistemas de décadas de antigüedad en finanzas, gobierno y salud, los feeds RSS/Atom y los archivos de diseño de Android son solo algunas de las áreas donde XML sigue siendo el formato estándar hoy. Existe una necesidad persistente de tomar datos extraídos de estos sistemas heredados y llevarlos a un flujo de herramientas moderno que solo entiende JSON —procesándolos con jq o manipulándolos como un objeto simple en JavaScript.

La convención `@attributes`/`#text` que usa esta herramienta es una elección práctica y común, no una notación cargada de símbolos. Los elementos hoja sin atributos se convierten directamente en su valor de texto, lo que mantiene legibles como JSON simple valores de configuración sencillos o un título de RSS, mientras que los elementos que sí tienen atributos se separan explícitamente, así que con solo mirar el resultado convertido se sabe exactamente qué valores eran originalmente atributos.