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
- Pegue el XML Una respuesta SOAP o un canal RSS entran exactamente como están.
- Revise la conversión **Los atributos se asientan bajo la clave `@attributes` y el texto bajo `#text`.**
- Compare las estructuras Puesto junto al XML original, puede confirmar qué elemento acabó bajo qué clave.
- 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
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.