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.

Consejos de uso

  • 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.

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.
ツールくん

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.