DataSwap Conversores de archivos y datos rápidos, sin registro

Conversor de XML a JSON

Pega tu XML abajo y obtén JSON al instante — analizado con el propio DOMParser del navegador, no con un escáner escrito a mano, así que el anidamiento, las comillas y las entidades se manejan exactamente como lo haría un analizador XML real. Nada de lo que pegues sale nunca de tu navegador.

Convierte XML a JSON con el analizador real del navegador

DOMParser construye un árbol DOM real a partir de tu XML — el mismo árbol que el navegador construiría para un documento real — y esta herramienta lo recorre recursivamente en vez de escanear el texto crudo en busca de etiquetas. Un elemento con solo contenido de texto (sin elementos hijos) se convierte en una cadena simple. Un elemento con elementos hijos se convierte en un objeto indexado por la etiqueta del hijo. Los atributos quedan bajo una clave "@attributes" para que nunca se confundan con elementos hijos. Y cuando varios hijos comparten una etiqueta — hermanos <item>, entradas de lista, filas repetidas — se agrupan en un arreglo en vez de sobrescribirse en silencio, porque los elementos repetidos son la norma en XML del mundo real, no la excepción.

Ejemplo práctico

Entrada: <person id="42"><name>Ada Lovelace</name><tag>math</tag><tag>computing</tag></person> (85 caracteres: un atributo y tres elementos hijos, dos de los cuales comparten la etiqueta tag). Al convertirlo se produce:

{
  "@attributes": {
    "id": "42"
  },
  "name": "Ada Lovelace",
  "tag": [
    "math",
    "computing"
  ]
}

— 111 caracteres. Observa que tag se convirtió en un arreglo de dos elementos, no solo en "computing" sobrescribiendo "math". Ahora prueba con <a><b></a> — la etiqueta <b> sin cerrar hace que esto sea XML no válido, y en vez de una salida vacía o un fallo confuso, esta herramienta muestra un mensaje en lenguaje claro pidiéndote que revises tus etiquetas, porque DOMParser no lanza un error con XML incorrecto — devuelve un documento que contiene un elemento <parsererror>, y esta herramienta comprueba exactamente eso. ¿Prefieres construir XML bien formado desde el principio? El Conversor de JSON a XML se encarga de la dirección inversa.

Preguntas frecuentes

¿Qué ocurre cuando varios elementos comparten la misma etiqueta?

Se agrupan en un arreglo JSON en vez de sobrescribirse entre sí. El primer <item> se convierte en un valor y, en el momento en que aparece un segundo <item> hermano, esa clave se convierte en un arreglo y ambos valores se añaden a él — así que tres hermanos <item> se convierten en un arreglo de tres, no solo en el último. Este es el descuido más común al convertir XML a JSON a mano, y por eso comprobamos si ya existe la clave en cada elemento en vez de asumir que cada etiqueta aparece una sola vez.

¿Dónde terminan los atributos de XML en el JSON?

Bajo una clave "@attributes" del objeto de ese elemento, para que nunca se confundan con los elementos hijos — <price currency="USD">19.99</price> se convierte en {"@attributes":{"currency":"USD"},"#text":"19.99"}. Un elemento con atributos pero sin hijos ni texto solo obtiene la clave "@attributes" y nada más.

¿Qué pasa si mi XML no es válido?

DOMParser no lanza un error de JavaScript con XML mal formado — en su lugar devuelve silenciosamente un documento que contiene un elemento <parsererror>, algo fácil de pasar por alto si no se comprueba. Esta herramienta comprueba exactamente eso y muestra un mensaje en lenguaje claro en vez de un cuadro vacío o un fallo confuso.

¿Se sube mi XML a algún servidor?

No. El análisis ocurre con el propio DOMParser del navegador, y el JSON se construye con JSON.stringify — ambos se ejecutan por completo en tu navegador. Nada de lo que pegues se envía, se guarda ni se registra. Eso es válido para cada herramienta de este sitio.

¿Esto maneja espacios de nombres XML o secciones CDATA?

Las secciones CDATA se manejan correctamente porque DOMParser las resuelve igual que cualquier analizador XML debe hacerlo: su contenido simplemente pasa a formar parte del texto del elemento, indistinguible del texto normal, que es exactamente lo que dice la especificación XML sobre una sección CDATA. Los elementos con espacio de nombres conservan su etiqueta con prefijo (como ns:tag) como clave JSON, así que nada se descarta en silencio — esta herramienta no hace una resolución de espacios de nombres separada más allá de eso.