
Conversión de XML a JSON: Guía práctica para desarrolladores
📷 Pixabay / PexelsConversión de XML a JSON: Guía práctica para desarrolladores
XML parece de otra era, pero lo seguirás encontrando a diario en APIs, archivos de configuración y feeds de datos. Así es como convertirlo sin perder la cordura.
Cada pocos años la comunidad de desarrolladores se emociona declarando XML muerto. Y luego recibes tu primer contrato de integración enterprise, o extraes un feed RSS, o miras un archivo de layout de Android, o alguien te entrega una respuesta de API SOAP del tamaño de una novela pequeña — y ahí está. XML. Todavía muy vivo.
Esta guía no trata sobre si XML es bueno o malo. Se trata del problema práctico que enfrentas cuando tienes datos XML y necesitas JSON, ya sea para alimentarlo en una API moderna, parsearlo en JavaScript, o simplemente hacerlo legible. Vamos a ello.
Por qué sigues viendo XML en 2026
XML fue el formato de intercambio de datos dominante de finales de los 90 y los 2000. JSON lo desplazó en gran medida para las API web en los 2010, pero XML nunca desapareció — simplemente se movió a lugares donde ya estaba arraigado.
Dónde seguirás encontrando XML regularmente:
Feeds RSS y Atom. Todos los grandes sitios de noticias, plataformas de podcasts y blogs siguen publicando un feed RSS en XML. Si estás construyendo algún tipo de agregador de contenido, lector de noticias o app de podcasts, estás tratando con XML.
Servicios web SOAP. Muchos sistemas enterprise y gubernamentales usan APIs SOAP, que son basadas en XML. Integraciones bancarias, sistemas de seguros, APIs de salud, transportistas — SOAP es omnipresente en el software B2B.
Maven y Gradle (herramientas de build de Java/Kotlin). Los archivos pom.xml. Si tocas cualquier proyecto JVM, tocas XML. El AndroidManifest.xml y los archivos de layout de Android también son XML.
Formatos de Microsoft Office. DOCX, XLSX, PPTX son archivos ZIP que contienen XML. La generación o análisis programático de documentos a menudo significa XML bajo el capó.
SVG. Los Scalable Vector Graphics son XML. Si trabajas con imágenes vectoriales programáticamente, estás en territorio XML.
Salesforce. El SOQL y el Bulk API v1 de Salesforce producen XML.
El patrón es claro: el desarrollo web moderno se inclina fuertemente hacia JSON, pero en el momento que te acercas a integraciones enterprise, feeds de datos o ecosistemas más antiguos, aparece XML.
Qué hace que XML sea difícil de trabajar
Si estás acostumbrado a JSON, XML se siente profundamente molesto. He aquí por qué.
Verbosidad. Compara:
{"user": {"id": 1, "name": "Alice", "active": true}}
versus:
<user>
<id>1</id>
<name>Alice</name>
<active>true</active>
</user>
Ambos transmiten los mismos datos. El XML es más largo, más difícil de leer de un vistazo, y más propenso a errores al escribir a mano.
Ambigüedad atributo vs. elemento. XML te permite representar datos como un atributo (<user id="1">) o como un elemento hijo (<id>1</id>). Ambos son válidos, y diferentes esquemas XML hacen diferentes elecciones. Esta inconsistencia significa que no puedes predecir la estructura sin leer el esquema.
Espacios de nombres. Los espacios de nombres XML permiten que coexistan nombres de elementos de diferentes vocabularios sin colisión. Poderoso y necesario para documentos complejos, pero un dolor de cabeza cuando intentas extraer valores simples.
Contenido mixto. XML soporta texto mezclado con elementos hijos:
<p>Este texto es <em>importante</em>.</p>
Esto no se mapea limpiamente a JSON.
Todo esto es por qué trabajar con XML en JavaScript o Python requiere una biblioteca XML adecuada, no parsing de strings. Y es por qué convertir a JSON — cuando la estructura lo permite — hace que los datos sean mucho más fáciles de trabajar.
Cómo JSON modela los datos de forma diferente
JSON tiene un modelo de tipos más simple y rígido:
- Strings —
"hello" - Números —
42,3.14 - Booleanos —
true,false - Null —
null - Arrays —
[1, 2, 3] - Objetos —
{"key": "value"}
Todo en JSON es uno de estos seis tipos. No hay concepto de atributos, espacios de nombres, contenido mixto o instrucciones de procesamiento. Esta simplicidad es por qué JSON ganó para el diseño de APIs — solo hay una forma de representar datos.
Usando la herramienta XML a JSON
El conversor XML a JSON maneja la conversión directamente en tu navegador — sin datos enviados a un servidor, sin instalación necesaria.
Uso básico:
- Pega tu XML en el panel izquierdo
- Haz clic en Convertir (o convierte automáticamente)
- La salida JSON aparece a la derecha
- Copia el JSON y úsalo donde lo necesites
Para un documento XML simple como:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice</name>
<age>30</age>
<email>alice@example.com</email>
</person>
Obtienes JSON limpio:
{
"person": {
"name": "Alice",
"age": "30",
"email": "alice@example.com"
}
}
Nótese que age es un string en la salida JSON ("30" no 30). XML no tiene tipo numérico — todo es texto.
La convención del prefijo de atributo
Cuando un elemento XML tiene atributos, aparecen en la salida JSON con un prefijo @:
<book id="123" lang="en">
<title>Clean Code</title>
<author>Robert Martin</author>
</book>
Se convierte en:
{
"book": {
"@id": "123",
"@lang": "en",
"title": "Clean Code",
"author": "Robert Martin"
}
}
El prefijo @ es una convención ampliamente usada (originalmente de la convención Badgerfish y usada en varias bibliotecas populares de conversión XML-JSON). Distingue los atributos de los elementos hijos en la estructura JSON. En el código accedes a data.book["@id"] para el valor del atributo.
Los elementos repetidos se convierten en arrays
Uno de los comportamientos de conversión más importantes (y potencialmente sorprendentes): cuando la misma etiqueta aparece varias veces en el mismo nivel, se convierte en un array JSON.
<library>
<book>
<title>Clean Code</title>
</book>
<book>
<title>The Pragmatic Programmer</title>
</book>
<book>
<title>Refactoring</title>
</book>
</library>
Se convierte en:
{
"library": {
"book": [
{"title": "Clean Code"},
{"title": "The Pragmatic Programmer"},
{"title": "Refactoring"}
]
}
}
Esto es correcto y útil. Pero crea una inconsistencia: si la biblioteca tuviera solo un libro, book sería un objeto, no un array. Esto tropieza con mucho código que asume que la estructura JSON siempre es consistente.
Si estás escribiendo código para consumir este JSON convertido, siempre maneja el caso donde un campo podría ser un objeto o un array. En JavaScript: Array.isArray(data.library.book) antes de acceder a posiciones de índice.
Cuando la conversión no es perfecta
Algunas características XML no se traducen limpiamente a JSON.
Espacios de nombres. Las declaraciones de espacio de nombres (xmlns="...") pueden o no preservarse según el conversor.
Secciones CDATA. La mayoría de los conversores extraen el contenido de texto de los bloques CDATA. Si el contenido CDATA contenía marcado intencional o caracteres especiales, verifica la salida cuidadosamente.
Instrucciones de procesamiento y comentarios XML. Típicamente se descartan.
Contenido mixto. El caso más difícil. Los conversores típicamente solo conservan los valores de elementos hijos, perdiendo el texto circundante.
Para el intercambio simple de datos — APIs, configuración, feeds de datos — estos casos extremos rara vez importan. Para XML centrado en documentos (gestión de contenido, documentación técnica), debes ser consciente de ellos.
Casos de uso prácticos
Consumir una respuesta de API SOAP
La conversión de una respuesta SOAP te da una estructura JSON con la que puedes trabajar en JavaScript sin una biblioteca SOAP completa. Los prefijos de espacio de nombres (soap:) aparecen como parte de los nombres de claves. Para la extracción rápida de datos, esto suele ser suficiente.
Parseando un Feed RSS
Los feeds RSS son documentos XML con una estructura predecible. Convertirlos a JSON hace que sea mucho más fácil trabajar con ellos en JavaScript moderno. Después de la conversión, data.rss.channel.item es un array de posts que puedes iterar directamente.
Leyendo archivos de recursos Android
Los archivos de recursos strings.xml de Android son XML. Convertirlos a JSON facilita el procesamiento de estos archivos en scripts de build o herramientas sin un SDK Android completo.
Para la conversión programática
Si necesitas convertir XML a JSON repetidamente en código, la rápida herramienta del navegador no es la respuesta. Aquí están las opciones:
JavaScript/Node.js: fast-xml-parser es la biblioteca más ampliamente utilizada, rápida y configurable. xml2js es más antigua pero sigue siendo popular.
const { XMLParser } = require('fast-xml-parser');
const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@' });
const result = parser.parse(xmlString);
Python: xmltodict convierte XML a diccionarios Python (que se mapean limpiamente a JSON).
import xmltodict, json
result = xmltodict.parse(xml_string)
json_output = json.dumps(result, indent=2)
Go: encoding/xml está en la biblioteca estándar, aunque la API requiere definiciones de struct. github.com/clbanning/mxj proporciona conversión dinámica similar a xmltodict.
Para conversiones únicas o depuración, la herramienta XML a JSON es más rápida que escribir cualquiera de este código. Para pipelines de producción, elige una biblioteca que se adapte a tu lenguaje y configúrala una vez.
XML no va a ningún lado — la base instalada de sistemas basados en XML es enorme y las empresas no reescriben infraestructura que funciona según un calendario. La habilidad práctica es saber cómo trabajar con él eficientemente cuando aparece, en lugar de luchar contra él cada vez.
Herramientas relacionadas para trabajar con datos estructurados:
- Formateador XML — formatear, validar y dar formato legible al XML
- Formateador JSON — limpiar la salida JSON después de la conversión
- JSON Diff — comparar dos estructuras JSON para detectar cambios