Cómo convertir CSV a XML (también desde Excel y Google Sheets)
Casi todos los datos empiezan en una hoja de cálculo: listas de productos, tarifas, contactos, pedidos. Pero muchos sistemas, como las importaciones de tiendas y ERP, los feeds de productos, las herramientas editoriales o el software de gestión antiguo, esperan XML. Pasar la hoja a CSV y el CSV a XML resuelve el problema sin volver a teclear nada.
Esta guía explica cómo hacerlo con el conversor gratuito CSV a XML, qué opciones elegir y cómo evitar los problemas de CSV que más a menudo rompen una conversión.
Qué hace la conversión
Cada fila se convierte en un elemento de registro y cada columna en un campo dentro de él, todo dentro de un único elemento raíz:
id,title,author,price,in stock
bk101,"XML & JSON for Everyone",Ada Lovelace,29.95,true
bk102,Daten für alle,Alan Turing,24.50,false<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<id>bk101</id>
<title>XML & JSON for Everyone</title>
<author>Ada Lovelace</author>
<price>29.95</price>
<in_stock>true</in_stock>
</book>
<book>
<id>bk102</id>
<title>Daten für alle</title>
<author>Alan Turing</author>
<price>24.50</price>
<in_stock>false</in_stock>
</book>
</books>Los encabezados de columna pasan a ser los nombres de los elementos. El & del primer título se escapa como &, la coma dentro del título entre comillas sigue formando parte del valor, y el encabezado “in stock”, que no puede ser un nombre XML por el espacio, se convierte en in_stock. Una nota bajo el resultado indica cada nombre que se cambió.
Cómo convertir CSV a XML, paso a paso
- Abre CSV a XML y pega tu CSV en Entrada CSV, haz clic en Abrir archivo o suelta un archivo .csv en el recuadro. Ejemplo carga tres libros como los de arriba.
- Mira la línea bajo el recuadro, como ✓ CSV con 5 columnas y 3 filas. Si los números no cuadran, el problema suele ser el separador o unas comillas (ver más abajo).
- Pon nombre al Elemento raíz y al Elemento de registro, y elige cómo se escriben los valores en Valores como.
- Haz clic en Convertir a XML y descarga el archivo .xml o cópialo.
Elegir buenos nombres de elemento
Los valores por defecto son records y record, pero los nombres que describen tus datos son más cómodos: books y book, products y product, contacts y contact. Lo habitual es una raíz en plural con registros en singular. Si el sistema al que importas espera nombres concretos, usa exactamente esos, con mayúsculas y minúsculas incluidas.
Los nombres XML pueden llevar letras, cifras, -, _ y ., deben empezar por una letra o _ y no pueden tener espacios. El conversor te avisa si un nombre que escribiste no sirve.
Los encabezados de columna siguen las mismas reglas, así que se ajustan solos: los espacios y otros caracteres pasan a ser _, y un encabezado que empieza por una cifra lleva un _ delante. Si quieres nombres concretos, cambia antes los encabezados en la hoja. Con La primera fila tiene los nombres de columna desmarcada, las columnas se llaman simplemente column1, column2, etc.
¿Elementos hijos o atributos?
Con Valores como en Atributos, las mismas dos filas quedan en un elemento compacto cada una:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="bk101" title="XML & JSON for Everyone" author="Ada Lovelace" price="29.95" in_stock="true"/>
<book id="bk102" title="Daten für alle" author="Alan Turing" price="24.50" in_stock="false"/>
</books>Los Elementos hijos (por defecto) son lo más habitual, se leen bien y sirven para textos largos. Los Atributos dan archivos más cortos y son lo que esperan algunas importaciones y formatos de configuración. Si dudas, mira un archivo de ejemplo del sistema al que vas a enviarlo.
Celdas vacías
Por defecto, una celda vacía se conserva como elemento vacío, para que todos los registros tengan los mismos campos:
<contact>
<id>1</id>
<name>Ada</name>
<phone/>
</contact>Marca Omitir celdas vacías para saltarlas:
<contact>
<id>1</id>
<name>Ada</name>
</contact>Consérvalas si el sistema de destino espera todos los campos; omítelas para tener archivos más pequeños cuando un campo ausente significa “sin valor”.
Evitar problemas de CSV
- Separador: Automático reconoce comas, puntos y comas, tabuladores y barras verticales. Las hojas de cálculo en muchos países europeos guardan el CSV con punto y coma; también se detecta.
- Comillas: un valor que contiene el separador, comillas o un salto de línea debe ir entre comillas dobles, con las comillas interiores duplicadas (
"Dijo ""hola"""). Excel y Google Sheets lo hacen por ti. Unas comillas que nunca se cierran se indican con su línea y columna. - Tildes: en Excel, guarda como CSV UTF-8 (delimitado por comas) para que letras como ü y é se conserven. En Google Sheets, Archivo › Descargar › Valores separados por comas ya es UTF-8.
- Filas desiguales: si algunas filas tienen menos valores que columnas, los que faltan se escriben vacíos y una nota indica cuántas filas se vieron afectadas.
Conviene saber
Los valores se copian tal cual están en el CSV, así que 24.50 sigue siendo 24.50 y 007 conserva sus ceros. Cada fila se convierte en un registro plano; si necesitas XML anidado, como una dirección dentro de un cliente, créalo a partir de JSON con JSON a XML.
Más herramientas XML
- Formateador de XML: revisa el resultado o explóralo en la Vista de árbol.
- Validador de XML: compruébalo con el esquema XSD del sistema al que vas a importarlo.
- XML a CSV: la conversión inversa. Lee también cómo convertir JSON a CSV.
¿Se sube mi CSV?
No. La conversión se hace en tu navegador, así que tus datos nunca salen de tu dispositivo. Nuestro servidor solo registra que hubo una conversión, para el límite diario.
Preguntas frecuentes
¿Cómo convierto un archivo de Excel a XML?
Guarda la hoja como CSV (Archivo › Guardar como › CSV UTF-8), abre ese archivo en CSV a XML y conviértelo.
¿Puedo convertir el XML de vuelta a CSV?
Sí, con XML a CSV. Encuentra el elemento de registro que se repite y hace una fila de cada uno.
¿Por qué se cambió el nombre de una columna?
Su encabezado tenía un espacio u otro carácter que los nombres XML no admiten, o empezaba por una cifra. La nota bajo el resultado muestra el nombre antiguo y el nuevo.