Saltar al contenido principal

XML a CSV

Este convertidor transforma XML a CSV RFC 4180 en tu navegador. Los hijos repetidos del elemento raíz se convierten en filas, sus atributos en columnas con prefijo @, y el texto del elemento en columnas con nombre. Todo termina con CRLF y comillas solo donde la gramática lo exige. No se sube nada.

Solo local

XML a CSV: explicación

La mayoría de XML real que se comporta como una tabla comparte una forma: un elemento contenedor que tiene muchos hijos con el mismo nombre, cada uno representando un registro — un catálogo de libros, un registro de entradas, una lista de pedidos. Este convertidor busca exactamente esa forma. Encuentra el hijo repetido de la raíz y el resto es mecánico: cada hijo se convierte en una fila, sus atributos y elementos internos en columnas, y la unión de cada columna en cada fila se convierte en el encabezado, en el orden en que se vieron por primera vez.

Las convenciones son las que usa cualquier puente XML y se explicitan aquí: un atributo mantiene su nombre pero gana un prefijo @, por lo que id="bk101" se convierte en la columna @id; el texto de un elemento se convierte en su valor #text; y un elemento hijo que se repite dentro de un registro explota en columnas indexadas en lugar de fusionarse silenciosamente. El lado CSV es estrictamente RFC 4180 — final de línea CRLF, escape de comillas dobles solo cuando un campo contiene una coma, comilla o salto de línea — y los valores cruzan tal cual, sin coerción numérica para reformatear un código postal.

Todo se ejecuta en esta pestaña del navegador. El XML se analiza con un motor en la página y el CSV se construye desde el árbol analizado; ninguno toca la red — abre DevTools, observa que el panel de red se queda en silencio, y la afirmación se comprara sola.

¿Construyendo el XML desde una exportación de hoja de cálculo en su lugar? El convertidor de CSV a XML aplica estas mismas convenciones en la dirección opuesta.

Lo que el lado CSV garantiza — comillas, CRLF, comillas dobles — está debidamente documentado en la guía de RFC 4180 de este sitio.

Cómo funciona realmente la conversión

El documento se tokeniza una vez en un árbol, luego la lectura tabular es un paso separado y honesto: el árbol tiene o no tiene la forma de hijos repetidos, y fingir lo contrario produciría un CSV que se ve bien pero significa otra cosa. Cuando se encuentra la forma, cada registro se aplana a rutas de hojas, y la fila de encabezado es la unión ordenada de esas rutas en todos los registros — primero visto primero, por lo que el orden de las columnas es estable y predecible, no alfabético por casualidad.

  • Análisis: un tokenizador de un solo pase construye el árbol de elementos; se omiten comentarios, DOCTYPE e instrucciones de procesamiento, y se rechaza un segundo elemento raíz con el número de línea.
  • Selección: el primer elemento hijo repetido de la raíz proporciona las filas — <catalog> lleno de hijos <book> es el caso clásico.
  • Aplanamiento: los atributos se convierten en columnas @, el texto del elemento en #text, y el anidamiento más profundo en rutas con puntos como author.#text.
  • Emisión: una fila terminada en CRLF por registro, campos entre comillas solo cuando una coma, comilla o salto de línea lo obligan.

Cómo se asignan las características de XML a columnas

XML tiene tres formas de llevar un valor — atributos, contenido de texto y elementos hijos — y una cuadrícula plana tiene una: una columna con nombre. La asignación de abajo es la estándar, elegida para que ninguna dos características de la fuente puedan colisionar en la salida y para que el encabezado mismo te diga de qué tipo de vino cada columna.

Construcción XMLColumnaEjemplo de celda
atributo id="bk101"@idbk101
texto de elemento <price>5.95</price>price.#text5.95
elemento con atributos y texto@sku más #textA-1, Widget
nietos repetidosbook[0].#text, book[1].#textuno, dos

Los valores cruzan tal cual

No hay un paso de inferencia de tipo entre el árbol XML y el CSV, deliberadamente. El texto XML es texto, por lo que 44.95 llega como los caracteres 44.95, un código postal mantiene su cero inicial, y un valor como 1e5 no se expande a 100000. Las entidades se transportan de la misma manera: el analizador no es un analizador validador y no reescribe referencias a entidades, por lo que lo que llega a una celda es exactamente lo que el texto fuente contenía. Si el destino necesita valores tipados, empareja esta herramienta con el convertidor de CSV a SQL, que infiere tipos de las celdas en ese punto, donde la elección es visible y reversible.

  • Los números mantienen sus caracteres exactos — no se inventa ni pierde precisión.
  • El espacio en blanco dentro de un nodo de texto se conserva; el espacio en blanco entre elementos nunca se convierte en datos.
  • Los elementos vacíos (<debug/>) producen una columna con una celda vacía en lugar de desaparecer.

Dónde este convertidor se niega a adivinar

Dos estructuras obligarían al convertidor a inventar información, y ambas se rechazan con un mensaje específico en su lugar. La primera es un documento sin elemento hijo repetido — una raíz única que no contiene nada tabulable no puede convertirse en filas sin inventar una forma de fila. La segunda es un documento con más de un elemento raíz, que no es un documento en absoluto; el error nombra el elemento ofensor y su línea, y no se escribe nada. Un fragmento que casi encaja sigue siendo un fragmento, y la solución más rápida es borrar o renombrar el elemento contenedor antes de pegar.

  • Sin hijos repetidos: error que nombra la forma esperada <root><item>…</item></root>.
  • Múltiples raíces: rechazado, con el segundo elemento y su línea notificados.
  • Etiquetas de cierre que no coinciden: rechazado en el punto donde el deja de estar bien formado.

Preguntas frecuentes

¿Convertir XML a CSV sube mi archivo a algún sitio?

No. El análisis XML y la construcción CSV ocurren dentro de esta pestaña del navegador con JavaScript que se cargó una vez cuando la página abrió. No hay ruta de API a la que enviar datos, y la Content-Security-Policy de la página establece connect-src 'self', por lo que el mismo navegador bloquearía cualquier solicitud saliente. Ambas afirmaciones se pueden verificar en DevTools: observa el panel de Red mientras conviertes — no aparece ninguna solicitud.

¿Qué elementos XML se convierten en las filas CSV?

El convertidor mira los hijos del elemento raíz y toma el repetido — el elemento con el mismo nombre que aparece muchas veces, como <book> dentro de <catalog>. Cada ocurrencia se convierte en una fila. Si ningún hijo se repite, cada hijo con forma de objeto se trata como su propio registro en su lugar, y una raíz con nada tabulable dentro se rechaza con un error nombrado en lugar de aplanarse en un archivo de una fila engañoso.

¿Por qué algunos nombres de columna empiezan con @ o contienen #text?

Los prefijos registran dónde vivía cada valor en el XML. Un prefijo @ marca un atributo — id="bk101" se convierte en la columna @id — y #text marca el texto propio de un elemento, que necesita un nombre propio cuando el elemento también tiene atributos o hijos. Los prefijos evitan colisiones: un elemento llamado id y un atributo llamado id de otro modo competirían por una columna, y el encabezado no te diría cuál era cuál.

¿Los números se convierten, o los valores se mantienen como están escritos?

Los valores se mantienen exactamente como están escritos. El árbol mantiene el texto como cadenas y el escritor de CSV no hace inferencia de tipo, por lo que 44.95 cruza como 44.95, un código postal como 02134 mantiene su cero inicial, y nada se reformatea a tus espaldas. Esta es la misma política que sigue el convertidor XML a YAML del sitio, por lo que un archivo convertido de cualquier manera muestra los mismos valores carácter por carácter.

¿Cómo se manejan los campos entre comillas y los saltos de línea en la salida?

Según RFC 4180: un campo que contiene una coma, una comilla doble o un salto de línea se envuelve en comillas dobles, y una comilla dentro de dicho campo se duplica. Las filas terminan con CRLF, el terminador que la especificación define y el que esperan los programas de hoja de cálculo. Los campos se entrecomillan solo cuando la gramática lo exige — sin comillas decorativas — lo que mantiene el archivo más pequeño y más fácil de comparar que una exportación que entrecomilla todo.

¿Qué pasa con los comentarios XML y la línea DOCTYPE?

Se omiten. Los comentarios, la declaración DOCTYPE y las instrucciones de procesamiento no llevan datos tabulares, por lo que el árbol simplemente nunca los incluye; el análisis continúa desde la estructura del elemento. Lo único que el convertidor insiste es en un único elemento raíz — un documento con un segundo elemento de nivel superior se rechaza con el nombre del elemento y el número de línea, porque dos raíces son dos documentos, no un conjunto de filas.