XML a JSON
Conversor online gratuito de XML a JSON basado en el DOMParser nativo del navegador. Los atributos XML se asignan directamente a campos, los elementos repetidos se fusionan en arrays, el texto va al campo value. Salida JSON o YAML con prettyPrint y autorreparación de errores XML, 100% en el navegador.
Relacionado
Acerca de XML a JSON: convierte datos XML en objetos JSON estándar automáticamente
XML a JSON es el proceso de convertir datos en formato XML (mensajes SOAP, feeds RSS, archivos de configuración) en objetos JSON. XML es el formato tradicional para sistemas empresariales, SOAP Web Services, archivos de configuración y documentos Office, mientras que JSON es el estándar de facto para las API web modernas, JavaScript y bases de datos NoSQL. Cada formato tiene sus puntos fuertes: XML es estricto, autodescriptivo y ampliamente compatible con espacios de nombres y validación de esquemas; JSON es conciso, fácil de analizar y se adapta naturalmente a JavaScript. La conversión de XML a JSON para frontend moderno o microservicios es una necesidad común, y esta herramienta automatiza ese proceso.
El núcleo de la herramienta es usar el DOMParser nativo del navegador para analizar XML y recorrer automáticamente el árbol DOM para producir un objeto JSON. DOMParser es el analizador XML integrado del navegador, sigue el estándar W3C DOM y admite todas las características de XML 1.0, incluidos espacios de nombres, CDATA, comentarios y atributos. El análisis basado en DOM no tiene dependencias, es de buen rendimiento y cumple con los estándares.
Las reglas de asignación son intuitivas: cada elemento XML se convierte en un objeto JSON, los atributos del elemento se convierten en campos de objeto directamente (sin prefijo @, evitando las convenciones de nomenclatura desordenadas de algunas herramientas), el texto del elemento va al campo value, y los elementos hermanos repetidos con el mismo nombre de etiqueta se fusionan en arrays. Por ejemplo, <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore> se convierte en {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}.
La elección de la asignación directa de atributos sin prefijo es una decisión de diseño clave. Muchas herramientas de conversión XML usan @attribute, #text y otros prefijos especiales para distinguir atributos y texto. Si bien son precisos, la estructura JSON resultante es torpe y difícil de consumir en JavaScript directamente. La asignación directa de atributos hace que el JSON generado se acerque más a los modelos de datos comerciales reales; los desarrolladores pueden definir tipos coincidentes en una interface de TypeScript directamente.
La transformación en array de elementos repetidos es otro diseño clave. XML no tiene un concepto nativo de array, lo que requiere elementos repetidos (por ejemplo, varios <item>) para representar datos de lista. La herramienta detecta automáticamente varios elementos hermanos con el mismo nombre de etiqueta y los fusiona en arrays, alineándose con la semántica de lista de JSON y evitando la pérdida de datos o la necesidad de fusionar manualmente.
El formato de salida dual (JSON + YAML) es un diseño diferenciador. YAML es otro formato popular de serialización de datos, ampliamente utilizado en configuraciones de Kubernetes, Docker Compose, Ansible y GitHub Actions. La herramienta incluye un convertidor YAML simple que admite sangría estándar de 2 espacios, prefijo de lista - y sintaxis clave:valor. Alterne entre JSON/YAML con un clic.
La autorreparación de errores XML (tryFixXML) mejora la tolerancia a fallos de la herramienta. La entrada XML del mundo real a menudo carece de la declaración XML (<?xml version="1.0"?>) o usa etiquetas de cierre automático de estilo HTML (por ejemplo, <br>) en lugar del estilo XML <br />. La herramienta agrega automáticamente la declaración XML y completa la barra diagonal en las etiquetas de cierre automático, lo que permite que DOMParser procese correctamente más XML no estándar.
El formato y la compresión XML (formatXML/compressXML) funcionan con la biblioteca xml-formatter. El modo prettyPrint genera XML con sangría de 2 espacios, legible; el modo de compresión genera XML compacto sin espacios en blanco adecuado para transmisión de red. Los desarrolladores pueden usar la herramienta para comprimir XML antes de almacenar en una base de datos, ahorrando entre un 30% y un 50% de espacio de almacenamiento.
La conversión automática en tiempo real es una característica práctica. Después de que dejes de escribir, la herramienta convierte con un debounce de 500ms; combinada con los seis atajos de teclado (macOS ⇧⌘+F/C/T/O/D/K), los usuarios pueden completar rápidamente operaciones comunes como formatear, comprimir, convertir, subir, descargar y limpiar sin clics del ratón.
El procesamiento puramente del lado del cliente es la arquitectura central. Todo el análisis XML, el recorrido DOM, la serialización JSON y la conversión YAML se ejecutan en JavaScript del navegador. DOMParser lo proporciona el navegador de forma nativa (no es necesario agrupar un analizador XML), y xml-formatter es un paquete npm ligero (menos de 30 KB). Los datos XML originales nunca se envían a un servidor, por lo que los mensajes SOAP confidenciales (que contienen información de pedidos, credenciales de usuario o respuestas de API empresariales) se pueden procesar de forma segura en local.
Casos de uso
- Convierte respuestas XML de pasarelas de pago, ERP o CRM API heredadas en JSON para frontends modernos o backends Node.js.
- Analiza feeds RSS / Atom en JSON para mostrarlos en frontends web, agregarlos a lectores de feeds unificados o importarlos a bases de datos.
- Lee archivos de configuración XML de aplicaciones Java (web.xml, applicationContext.xml) y conviértelos a JSON para consultas jq o importarlos a otras herramientas.
- Convierte respuestas XML SOAP 1.1/1.2 a JSON y procésalas con bibliotecas Node.js como jsonwebtoken o lodash.
- Analiza pom.xml de Maven, build.xml de Ant y scripts de compilación similares en JSON para visualización de metadatos del proyecto o análisis de dependencias.
- Convierte feeds RSS, Sitemap XML, fuentes de suscripción Atom a formato JSON para almacenamiento en bases de datos modernas como Elasticsearch o MongoDB.
- Convierte formatos XML estándar de la industria (HL7, ISO 20022) de salud o finanzas a JSON para microservicios modernos.
- Convierte archivos XML relacionados con SEO (sitemap.xml, robots.xml) de Google Merchant Center o Sitemap.org a JSON para rastreadores o herramientas de análisis.
Cómo Usar
- Pega tu XML en el editor izquierdo, haz clic en Subir para seleccionar un archivo .xml/.txt, o haz clic en Muestra para cargar el ejemplo integrado de librería.
- La herramienta convierte automáticamente 500ms después de dejar de escribir. Visualiza el JSON o YAML convertido a la derecha con resaltado de sintaxis CodeMirror.
- Haz clic en los botones JSON / YAML en la barra de herramientas derecha para cambiar el formato de salida en tiempo real. También puedes usar los botones Formatear (⇧⌘+F) o Comprimir (⇧⌘+C) para ajustar el formato de la entrada XML.
- Haz clic en Copiar para poner el JSON/YAML en el portapapeles, o haz clic en Descargar para guardarlo como un archivo con la extensión correcta (output.json / output.yaml / output.xml).
- Para corregir errores de sintaxis XML, haz clic en el botón Reparar junto al mensaje de error. La herramienta llama a tryFixXML para agregar la declaración XML y completar las etiquetas de cierre automático.
- Pega el JSON en tu código de destino (definición de interface TypeScript, tipo de respuesta API, etc.) o impórtalo a tu servicio backend para su posterior procesamiento.
Características
- Análisis inteligente del árbol DOM: analiza XML con el DOMParser nativo del navegador y recorre automáticamente el árbol de nodos para producir un objeto JSON estándar, sin dependencias.
- Asignación directa de atributos: los atributos XML (por ejemplo, id="1", category="fiction") se convierten en campos de objeto JSON regulares sin prefijo @.
- Arrays de elementos repetidos: los elementos hermanos con el mismo nombre de etiqueta se fusionan automáticamente en arrays JSON ({book: [{...}, {...}]}).
- Extracción de nodos de texto: el contenido de texto del elemento se almacena en un campo value, junto con atributos y elementos hijos.
- Salida de formato dual: cambia con un clic entre JSON (prettyPrint de 2 espacios) y YAML (sangría de 2 espacios, prefijo de lista -) para diferentes casos de uso.
- Autorreparación de errores XML: tryFixXML incorporado agrega declaraciones XML faltantes y completa etiquetas de cierre automático.
- Formato y compresión XML: usa la biblioteca xml-formatter para admitir salida prettyPrint y minify (sangría de 2 espacios o sin espacios en blanco).
- Conversión automática en tiempo real: convierte 500ms después de dejar de escribir, con salida actualizada en vivo sin clics manuales.
- Resaltado dual JSON/XML: la izquierda usa resaltado de sintaxis XML de CodeMirror; la derecha cambia entre resaltado JSON o YAML.
- Sistema completo de atajos: seis atajos comunes (formato/comprimir/convertir/subir/descargar/limpiar) para macOS y Windows/Linux.
- Copiar y descargar: copia al portapapeles con un clic, o descarga como output.json / output.yaml / output.xml (extensión auto-seleccionada por formato).
- 100% en el navegador: todo el análisis XML, recorrido DOM y serialización JSON ocurre en JavaScript del lado del cliente; el XML original nunca sale de tu dispositivo, y DOMParser lo proporciona el navegador de forma nativa.
Preguntas Frecuentes
¿Cómo convierto XML a formato JSON?
Pega tu XML en el editor izquierdo y la herramienta utiliza el DOMParser nativo del navegador para analizarlo, y luego recorre automáticamente el árbol DOM para construir un objeto JSON estándar. El nodo raíz se envuelve en { [tagName]: {...} }, los atributos se asignan directamente a campos (sin prefijo @), el texto del elemento va al campo value, y los elementos hermanos repetidos con el mismo nombre de etiqueta se fusionan en un array. La conversión se ejecuta 500ms después de que dejes de escribir.
¿Cómo se asignan los atributos XML y los nodos de texto?
La herramienta utiliza una asignación intuitiva: los atributos XML se convierten en campos de objeto JSON regulares (por ejemplo, <book id="1"> se convierte en {id: "1", ...} sin prefijo @), y el contenido de texto del elemento va al campo value (por ejemplo, <title>Great Gatsby</title> se convierte en {value: "Great Gatsby"}). Cuando un elemento tiene tanto atributos como texto, ambos se almacenan como hermanos en el mismo objeto.
¿Los elementos XML repetidos se convierten automáticamente en arrays JSON?
Sí. La herramienta detecta automáticamente varios elementos hermanos con el mismo nombre de etiqueta (por ejemplo, tres elementos <book> bajo <bookstore>) y los fusiona en un array JSON. Por ejemplo, <bookstore><book>...</book><book>...</book></bookstore> se convierte en {bookstore: {book: [{...}, {...}]}}. Esta convención coincide con las estructuras de datos XML más comunes.
¿Cómo se manejan los nodos de texto puro?
Cuando un elemento XML no tiene atributos y solo contenido de texto, la herramienta devuelve el texto directamente como una cadena (por ejemplo, <name>Alice</name> se convierte en "Alice"). Cuando el elemento tiene tanto atributos como texto, los atributos y el texto se almacenan como hermanos en el mismo objeto ({attr: "...", value: "..."}). Cuando el elemento tiene elementos hijos, los elementos hijos se convierten en campos de objeto, y cualquier contenido de texto se fusiona en un campo value.
¿Puede la herramienta manejar XML mal formado (etiquetas de cierre faltantes)?
Sí. La función de reparación tryFixXML incorporada agrega automáticamente la declaración XML faltante (<?xml version="1.0" encoding="UTF-8"?>) y completa la barra diagonal para etiquetas de cierre automático como br, hr e img. Esto mejora significativamente la compatibilidad con sistemas heredados y API de terceros no estándar.
¿Qué tipos de archivo XML son compatibles?
La herramienta admite archivos .xml y .txt (codificación UTF-8). Haz clic en el botón Subir para seleccionar un archivo local; la herramienta lo lee a través de la API FileReader nativa del navegador sin subirlo a un servidor. Después de la carga, el contenido se llena automáticamente en el cuadro de entrada y activa la conversión.
¿Puede generar tanto JSON como YAML?
Sí. La herramienta admite salida JSON y YAML. Haz clic en el botón de alternancia JSON/YAML en la barra de herramientas derecha para cambiar formatos en tiempo real. JSON se genera con prettyPrint de 2 espacios; YAML utiliza sangría estándar de 2 espacios, prefijo de lista - y sintaxis clave:valor.
¿Cuál es el nombre del archivo descargado?
La extensión se elige automáticamente según el formato de salida actual: output.json para JSON, output.yaml para YAML y output.xml (el formato original) cuando hay entrada pero no conversión. Todos los archivos están codificados en UTF-8 y pueden ser leídos directamente por sus respectivos analizadores de formato.
¿Qué atajos de teclado están disponibles?
La herramienta admite estos atajos: en macOS, ⇧⌘+F para formatear, ⇧⌘+C para comprimir, ⇧⌘+T para convertir, ⇧⌘+O para subir, ⇧⌘+D para descargar, ⇧⌘+K para limpiar; en Windows/Linux, usa Ctrl en lugar de ⌘. Seis atajos cubren el flujo de trabajo completo.
¿Se admiten los espacios de nombres XML?
Sí. La herramienta utiliza DOMParser para analizar XML, que admite de forma nativa espacios de nombres (xmlns). Los prefijos de espacio de nombres se conservan como parte del nombre del elemento en el JSON, por ejemplo, <svg:circle> se convierte en {svg:circle: {...}}. Para acceder a elementos entre espacios de nombres, identifícalos por el prefijo del espacio de nombres en el analizador JSON.
¿Se admiten las secciones CDATA?
Sí. El contenido de las secciones CDATA (<![CDATA[...]]>) se fusiona automáticamente en el textContent del elemento por el DOMParser, y la herramienta lo extrae en el campo value igual que el texto normal. Sin embargo, dado que CDATA es un tipo de nodo XML en lugar de una cadena, el CDATA original y el texto normal no se pueden distinguir en la salida JSON.
¿Qué tamaño de archivo de entrada se admite?
No hay un límite estricto; el límite práctico es la memoria del navegador. XML de hasta 1-2 MB funciona sin problemas; los archivos más grandes pueden ralentizarse debido a la mayor huella de memoria de DOMParser. Si experimenta lentitud con mensajes SOAP grandes o feeds RSS, considere recortarlos o dividirlos primero en un editor XML local.
Solución de problemas
Error de análisis JSON 'unclosed token', ¿qué hacer?
La causa suele ser XML con etiquetas de cierre faltantes, comillas de atributos no emparejadas o caracteres especiales sin escape. Haz clic en el botón Reparar junto al error para llamar a tryFixXML, que agrega automáticamente la declaración XML y completa las etiquetas de cierre automático. Si aún falla, verifica manualmente la estructura XML o usa document.documentElement.outerHTML en las herramientas de desarrollo del navegador para ver el resultado analizado.
El orden de los atributos en JSON no coincide con el XML fuente?
El estándar JSON no garantiza el orden de los atributos; la herramienta asigna los atributos en el orden del código fuente. Si tu negocio es sensible al orden, reconstruye el JSON como un array ordenado usando toPairs de lodash o herramientas similares. La mayoría de los motores JavaScript (V8, SpiderMonkey) conservan el orden de inserción de las claves de cadena.
Un solo elemento con el mismo nombre de etiqueta no se convierte en array, ¿cómo manejar?
La herramienta solo convierte a array cuando detecta varios elementos hermanos con el mismo nombre de etiqueta; si solo hay un elemento así, la herramienta lo mantiene como un solo objeto. Para forzar la conversión a array (incluso con un solo elemento), envuelve con castArray de lodash después de la conversión: [result].flat() o aplica validación de JSON Schema para forzar arrays.
¿Cómo mantengo los caracteres especiales en atributos XML (como <, &)?
DOMParser desescapea automáticamente los valores de los atributos; la herramienta conserva el contenido desescapeado. Si el XML original tiene <, el valor JSON convertido es <. Este es el comportamiento estándar de XML y coincide con las expectativas del usuario. Si necesitas conservar la forma original con escape, usa una biblioteca xml-formatter o un tokenizador XML personalizado para reemplazar DOMParser.
¿Por qué la salida YAML no tiene información de tipo?
YAML admite tipos de forma nativa (12 es number, true es boolean, null es null), pero el convertidor YAML simple de la herramienta serializa todos los valores como cadenas. Para preservar tipos, usa una biblioteca YAML madura como js-yaml, o aplica validación de JSON Schema en el lado del analizador para forzar tipos.
¿Cómo se manejan las Instrucciones de Procesamiento (PI) de XML?
DOMParser preserva las instrucciones de procesamiento XML (por ejemplo, <?xml-stylesheet ...?>) como nodos ProcessingInstruction en document.firstChild. La herramienta actualmente solo recorre nodos Element, por lo que las instrucciones de procesamiento se ignoran. Para preservarlas, extrae manualmente document.firstChild.nodeValue antes de usar.
¿Con qué abro el archivo .json descargado?
El archivo output.json descargado es un archivo JSON estándar codificado en UTF-8. Puedes abrirlo con cualquier editor de texto (VS Code, Sublime, Notepad++) o herramienta JSON especializada (jq, JSDoc), o arrastrarlo a un navegador para ver la estructura formateada. Casi todos los lenguajes de programación tienen analizadores JSON integrados.
Glosario
- JSON (JavaScript Object Notation)
- Formato ligero de intercambio de datos basado en la sintaxis de objetos JavaScript, pero independiente de cualquier lenguaje de programación. Admite seis tipos básicos: objeto ({}), array ([]), string, number, boolean y null. Es el estándar de facto para las API web modernas, bases de datos NoSQL y el ecosistema JavaScript.
- XML (eXtensible Markup Language)
- Lenguaje de marcado extensible definido por W3C en 1998. Usa etiquetas para describir datos y admite espacios de nombres, validación de esquemas y transformaciones XSLT. Es el formato estándar para SOAP Web Services, Office Open XML, RSS y Atom.
- DOMParser
- API nativa del navegador (estándar W3C DOM) que analiza cadenas XML o HTML en un árbol DOM. Todos los navegadores modernos (Chrome, Firefox, Safari, Edge) lo tienen integrado, por lo que no se necesita ninguna biblioteca de terceros.
- xml-formatter
- Biblioteca JavaScript ligera (menos de 30 KB) para formatear (prettyPrint) y comprimir (minify) documentos XML. Admite opciones personalizadas de sangría, separadores de línea y collapseContent.
- Asignación de atributos
- Forma en que los atributos de elementos XML se asignan a campos de objetos JSON. La herramienta utiliza un enfoque de asignación directa: <book id="1"> se convierte en {id: "1"}, sin prefijo @. Esto produce JSON más limpio y definiciones de interface TypeScript más simples.
- Transformación en array de elementos repetidos
- Los elementos XML hermanos con el mismo nombre de etiqueta (como varios <item>) se fusionan automáticamente en un array JSON. Esta es una decisión de diseño clave en la conversión de XML a JSON.
- Campo value
- Convención de la herramienta para el contenido de texto del elemento XML. El elemento <title>Great Gatsby</title> se convierte en {value: "Great Gatsby"}. Si el elemento tiene tanto atributos como texto, los atributos y value se almacenan como hermanos en el mismo objeto.
- YAML (YAML Ain't Markup Language)
- Formato de serialización de datos amigable para humanos, ampliamente utilizado en archivos de configuración de Kubernetes, Docker Compose, Ansible y GitHub Actions.
- SOAP (Simple Object Access Protocol)
- Protocolo de comunicación de servicios web basado en XML. Los mensajes SOAP están envueltos en un sobre SOAP (espacio de nombres XML) y contienen un encabezado y un cuerpo (carga útil XML).
- Feed RSS / Atom
- Formatos de distribución de contenido basados en XML. RSS 2.0 organiza el contenido en una estructura <rss><channel><item>, mientras que Atom usa <feed><entry>.
- Espacio de nombres XML
- Mecanismo para evitar conflictos de nombres de elementos usando el atributo xmlns, en el formato xmlns:prefix="uri". DOMParser admite espacios de nombres de forma nativa.
- Sección CDATA
- Sintaxis XML especial <![CDATA[...]]> para incrustar texto con caracteres especiales (como <, >, &) sin escape.
- tryFixXML
- Función de reparación XML integrada en la herramienta que agrega automáticamente declaraciones XML faltantes y completa la barra diagonal para etiquetas de cierre automático como br, hr e img.
- prettyPrint
- Modo de salida de la biblioteca xml-formatter que añade automáticamente sangría y saltos de línea para mejorar la legibilidad.
Reglas de asignación de elementos XML a campos JSON
Reglas de conversión de la herramienta basadas en DOMParser:
| Estructura XML | Ejemplo XML | Salida JSON | Regla de asignación |
|---|---|---|---|
element with attrs | <book id="1" category="fiction"/> | {"id": "1", "category": "fiction"} | Atributos asignados directamente a campos de objeto |
element with text | <title>Great Gatsby</title> | {"value": "Great Gatsby"} | Contenido de texto va al campo value |
attrs + text | <price currency="USD">12.99</price> | {"currency": "USD", "value": "12.99"} | Atributos y texto son hermanos |
nested elements | <book><title>Gatsby</title></book> | {"title": {"value": "Gatsby"}} | Elementos hijos se convierten en campos |
repeated elements | <books><book/><book/></books> | {"book": [{}, {}]} | Elementos repetidos se fusionan en array |
root element | <bookstore>...</bookstore> | {"bookstore": {...}} | Raíz envuelta en { [tagName]: ... } |
namespace prefix | <svg:circle/> | {"svg:circle": {...}} | DOMParser soporta espacios de nombres |
Comparación JSON vs YAML
Los dos formatos de salida compatibles con la herramienta, con sus características y casos de uso:
| Dimensión | JSON | YAML | Notas |
|---|---|---|---|
| Sintaxis | { } : [ ] concisa | sangrías + - listas | JSON más conciso, YAML más legible |
| Tipos de datos | number/bool/null nativos | number/bool/null nativos | Ambos preservan tipos |
| Sangría | 2 espacios | 2 espacios | La herramienta usa 2 espacios |
| Arrays | [1, 2, 3] | - 1\n- 2\n- 3 | JSON usa corchetes, YAML usa guiones |
| Comentarios | no soportados | # comentarios | YAML soporta comentarios |
| Casos de uso | REST API, frontend-backend | K8s, Docker, CI/CD | Web usa JSON, config usa YAML |
Privacy & Security
Esta herramienta de XML a JSON se ejecuta completamente en tu navegador. El análisis XML (impulsado por el DOMParser nativo del navegador), el recorrido del árbol DOM, la serialización JSON y la conversión YAML se ejecutan en JavaScript del lado del cliente; xml-formatter es la única dependencia externa (un paquete npm de menos de 30 KB). Los datos XML originales nunca se envían a un servidor. Las cargas de archivos utilizan la API FileReader nativa del navegador y nunca pasan por un servicio intermedio. La herramienta no usa cookies de seguimiento y no recopila datos de entrada o uso. Todas las entradas y salidas se borran de la memoria en cuanto se cierra o recarga la página. Segura de usar para mensajes XML que contengan datos comerciales confidenciales (información de pedidos, credenciales de usuario, respuestas de API empresariales).
Authoritative References
- Compresión JSON
- CSV a JSON
- JSON a CSV
- JSON Diff
- JSON Escape / Unescape
- JSON Flatten
- Formateo JSON
- Generador de JSON
- Consulta JSONPath
- Fusionar JSON
- Reparar JSON
- Validador JSON Schema
- Ordenar JSON
- JSON Stringify
- JSON a HTML
- JSON a Java
- JSON to Markdown
- JSON a SQL
- JSON a TOML
- JSON a TypeScript
- XML a JSON
- JSON a XML
- YAML a JSON
- JSON a YAML
- JSON a Python
- JSON a Go
- JSON a Rust
- JSON a Swift
- JSON a C#
- JSON a C++
- JSON a PHP