Convertir XML a CSV

Funciona en tu dispositivo · Tu archivo nunca sale de tu dispositivo.

Suelta un archivo XML con registros repetidos – <records><record>…</record>…</records>, un feed RSS, una exportación de una base de datos – y obtén un CSV con una fila por registro. El documento lo lee el analizador XML del navegador y la lista más larga de elementos repetidos se localiza sola, la envuelva lo que la envuelva – un atributo en el envoltorio, o el título y el enlace del propio feed junto a sus elementos – y la línea del resultado nombra la lista usada.

Cada registro se aplana igual que en la herramienta JSON a CSV: los elementos anidados pasan a columnas separadas por punto (direccion.ciudad), los atributos a columnas con prefijo @ (@id), los elementos internos repetidos con hijos propios reciben columnas numeradas (line.0.sku), los elementos de texto repetidos se unen con punto y coma (a;b), y la fila de cabecera es la unión de todas las columnas encontradas. Los valores se escriben exactamente como los tiene el XML. Los campos con comas, comillas o saltos de línea se entrecomillan según la RFC 4180.

El CSV es UTF-8 con una marca de orden de bytes opcional para Excel, tú eliges el separador y puedes ver las primeras 200 líneas antes de descargar. No se sube nada.

Cómo Convertir XML a CSV

  1. Suelta un archivo XML o pega el XML en el cuadro.
  2. Elige el separador de salida y si quieres añadir el BOM para Excel.
  3. Pulsa «Convertir a CSV» y revisa la vista previa.
  4. Descarga el .csv.

Formatos admitidos y límites

Entrada
XML (.xml) – un archivo o texto pegado, leído en la codificación que declara
Salida
CSV, RFC 4180, UTF-8, BOM opcional
Filas
La lista más larga de elementos repetidos
Anidamiento
Elementos hijos → columnas con punto; atributos → columnas @
Dónde se ejecuta
En tu navegador – sin subir nada

No sirve para: Documentos con varias listas de registros – solo la más larga se convierte en filas; para otra, pásalo a JSON, copia esa lista y conviértela con JSON a CSV.

Cómo se encuentran las filas

Las filas son la lista más larga de elementos repetidos en cualquier parte bajo la raíz, la envuelva lo que la envuelva. <records count="2"><record>…</record><record>…</record></records> da una fila por cada <record>, aunque el envoltorio tenga un atributo. Un feed RSS da una fila por cada <item>, con columnas como title, link y pubDate, aunque el title y el link del propio canal estén junto a los elementos. La línea bajo el resultado nombra la lista usada, por ejemplo rss.channel.item.

Los valores que hay junto a esa lista, como el título del propio feed, no forman parte de ningún registro y se dejan fuera. Cuando un documento contiene varias listas de registros, solo la más larga se convierte en filas. Para otra, convierte el archivo con /xml-to-json, copia esa lista desde su [ hasta su ], pégala en /json-to-csv y convierte.

Un archivo con un solo registro

Sin ningún elemento repetido, el único registro es la única fila, y sus columnas son sus propios nombres de campo: <records><record><nombre>Ana</nombre><ciudad>Bogotá</ciudad></record></records> da las columnas nombre y ciudad. Así, un archivo que a veces trae un registro y a veces muchos mantiene la misma cabecera, lo que importa cuando otro programa lee las columnas por su nombre.

Cómo se escriben los valores

Los valores se escriben exactamente como los tiene el XML: 1.50 sigue siendo 1.50, TRUE sigue siendo TRUE, y un elemento que contiene NULL da el texto NULL, mientras que un elemento vacío da una celda vacía. 007 conserva sus ceros y las fechas se quedan como están escritas. Un valor que empieza por =, +, - o @ recibe un apóstrofo delante, como en /json-to-csv, para que una hoja de cálculo no lo ejecute como fórmula.

Los elementos hijos repetidos que solo contienen texto se unen con punto y coma en una celda, así que dos elementos <tag> dan a;b. Los elementos hijos repetidos que tienen hijos propios reciben columnas numeradas, como line.0.sku y line.1.sku. Los prefijos de espacio de nombres se quedan en los nombres de columna, como en soap:Body.price. El texto que está junto a elementos hijos va a una columna #text, sin su posición entre ellos. El archivo se lee en la codificación que declara su primera línea.

Preguntas frecuentes

¿Mis archivos se suben a un servidor?
No. La conversión ocurre por completo en tu navegador, con la potencia de tu propio dispositivo. El archivo no sale de tu ordenador ni de tu móvil. Y una vez que has usado una herramienta, sigue funcionando sin conexión (el video, el reconocimiento de texto y la eliminación de fondo descargan su motor desde esta web la primera vez).
¿Cómo sabe qué elementos son las filas?
Toma la lista más larga de elementos repetidos bajo la raíz – así <records><record>…</record></records> da una fila por <record>, y un feed RSS una fila por <item>. Los valores que hay junto a esa lista, como el título del propio feed, se dejan fuera. Si no hay ningún elemento repetido, el único registro se convierte en una fila con sus propios nombres de campo como columnas.
¿Dónde van los atributos?
A columnas con el prefijo @, así que <record id="3"> produce una columna llamada @id. El texto que acompaña a elementos hijos va a una columna #text.
¿Lo abrirá bien Excel?
Sí. El interruptor «Añadir un BOM para Excel» (activado por defecto) escribe la marca que Excel necesita para reconocer UTF-8, así que acentos, eñes y símbolos se muestran correctamente.

Herramientas relacionadas

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 · বাংলা