Funciona en tu dispositivo · Tu archivo nunca sale de tu dispositivo.
Suelta un archivo .xml o pega XML de una API, un feed o un archivo de configuración y obtén JSON con el que trabajar. El documento lo lee el propio analizador XML del navegador, en la codificación que declara su primera línea, así que todo lo que esté bien formado se convierte, y un archivo mal formado se indica con la línea y la columna del problema y qué falla ahí.
La correspondencia es fija y reversible: cada elemento pasa a ser una clave; los hermanos con el mismo nombre forman un array; los atributos se conservan en claves que empiezan por @ (id="A3" pasa a "@id": "A3"); y cuando un elemento tiene texto además de hijos o atributos, el texto va en "#text". Un elemento que solo tiene texto se convierte directamente en ese valor.
Con la detección de tipos activada, un texto como 12, true o un elemento vacío pasa a número, booleano o null; desactívala para conservarlo todo como texto. Los nombres con espacio de nombres (soap:Body) se mantienen tal cual. La vista previa muestra las primeras 200 líneas antes de descargar.
No sirve para: Documentos que no son XML bien formado (etiquetas sin cerrar, páginas HTML) – el analizador indica el primer problema en lugar de adivinar.
La detección de tipos se aplica tanto a los atributos como al texto, y solo cambia un valor cuando no se pierde nada. Con ella activada, id="3" pasa a "@id": 3, mientras que id="007" sigue siendo el texto "007". 1.50 también sigue como texto, porque como número se volvería a escribir como 1.5. TRUE pasa a true. Un elemento vacío como <note/>, y uno que solo contiene espacios, pasan a null; la palabra NULL sigue como texto. Las fechas como 2024-01-05 nunca se convierten.
Con la detección desactivada, los elementos vacíos pasan a "" y todos los valores se quedan como texto, exactamente como están escritos.
Algunas partes de un documento XML no tienen sitio en JSON y se descartan: los comentarios, las instrucciones de procesamiento y el DOCTYPE. Las secciones CDATA pasan a texto normal, así que <a><![CDATA[<b>x</b>]]></a> da "a": "<b>x</b>".
El orden entre elementos de nombres distintos se pierde, porque cada nombre se convierte en una sola clave. En <step>1</step><note/><step>2</step>, los dos step se reúnen en "step": [1, 2], y nada registra que note estaba entre ellos. El texto mezclado con marcado pierde su sitio de la misma manera: <p>Hola <b>mundo</b> y <i>tú</i>.</p> se convierte en "b": "mundo", "i": "tú" y "#text": "Hola y .". Para documentos en los que ese orden es el contenido, como un texto con formato, esta correspondencia no es adecuada.
Los nombres con prefijo se conservan tal como están escritos, y las declaraciones de espacio de nombres aparecen como atributos: <soap:Envelope xmlns:soap="…"> da una clave "soap:Envelope" que contiene "@xmlns:soap", y /json-to-xml convierte las dos cosas de nuevo en el mismo XML.
Aparte de las entidades que define el propio DOCTYPE del documento, solo se entienden las cinco que trae XML (& < > " ') y las numéricas como  . Cuando el analizador se detiene, el mensaje da la línea y la columna y explica con palabras sencillas qué está mal: un elemento cerrado con otro nombre, un nombre desconocido como (escribe   en su lugar), un & o un < sueltos, un segundo elemento de primer nivel o un archivo que termina antes de tiempo.
El archivo se lee en la codificación que declara su primera línea, como ISO-8859-1 o windows-1256. Sin declaración, se lee como UTF-8 o UTF-16, y las páginas de códigos antiguas se reconocen como se explica en /csv-to-json.
Más en Hojas de cálculo y datos
Esta página en otros idiomas: English · العربية · Deutsch · Français · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা