yo construyo Toolz.dev, y un trabajo recurrente en el trabajo de WordPress y Laravel que hago es introducir datos en sistemas que fueron diseñados hace una o dos décadas. Muchos de ellos todavía hablan XML y sólo XML: un feed de producto para un mercado, un formato de importación para un paquete de contabilidad, un punto final SOAP que no verá nada más. Los datos casi siempre llegan como una exportación CSV desde una hoja de cálculo, por lo que la tarea es convertir filas planas separadas por comas en un documento XML estructurado. He observado que eso sale mal en todos los sentidos posibles, desde el nombre de un cliente que contiene una coma que se divide en dos columnas hasta un signo comercial en el nombre de una empresa que hizo que todo el archivo no se analizara. El Convertidor CSV a XML existe para realizar esa conversión correctamente, en el navegador, sin pegar una lista de clientes en algún servidor anónimo. Esta guía cubre lo que implica la conversión, por qué las partes complicadas son complicadas y cómo dar forma a la salida de lo que sea que la lea.
TL;Dr: Un convertidor de CSV a XML lee filas separadas por comas y las escribe como un documento XML bien formado, en el que cada fila se convierte en un elemento y cada celda se convierte en un elemento secundario con nombre o un atributo. Analiza CSV según RFC 4180, por lo que los campos citados que contienen comas, comillas o saltos de línea sobreviven intactos; detecta automáticamente si el delimitador es una coma, punto y coma, pestaña o tubería; obliga a los nombres de las columnas a formar etiquetas XML válidas; y escapa de los caracteres significativos del marcado para que la salida siempre los analice. Se ejecuta completamente en su navegador, por lo que los datos de su CSV nunca se cargan.
¿cuál es la diferencia entre CSV y XML?
CSV, valores separados por comas, es un formato de texto plano. Cada línea es un registro y dentro de una línea cada campo está separado por un delimitador, generalmente una coma. Es compacto, cada hoja de cálculo puede exportarlo y es trivial de leer para un humano. Lo que no puede hacer es expresar estructura o significado. No hay nada en un CSV que diga lo que significa una columna, ni anidamiento ni tipos; una celda que contiene true y una celda que contiene la palabra true son indistinguibles y un valor que contiene una coma necesita citas especiales para evitar ser leído como dos campos.
XML, el lenguaje de marcado extensible, es la operación opuesta. Cada valor está envuelto en una etiqueta con nombre, por lo que <name>Ada Lovelace</name> lleva tanto el valor como la etiqueta. Esa verbosidad compra estructura: los elementos anidan, los documentos se pueden validar según un esquema y una hoja de estilo puede transformar todo. Las reglas para lo que cuenta como XML bien formado se establecen en el Especificación W3C XML 1.0, y son estrictos en formas que CSV nunca lo es, razón por la cual una conversión mecánica debe tener cuidado. Convertir CSV a XML se trata fundamentalmente de agregar la estructura y el escape que CSV deja implícito.
¿Cómo se convierte una fila en un elemento?
El mapeo natural trata la primera fila CSV como el encabezado, manteniendo los nombres de las columnas, y cada fila siguiente como un registro. Cada registro se convierte en un elemento de fila y, dentro de él, cada celda se convierte en un elemento secundario que lleva el nombre de su columna. Entonces un CSV de id,name,role con una fila de datos 1,Ada Lovelace,Engineer se convierte:
<rows>
<row>
<id>1</id>
<name>Ada Lovelace</name>
<role>Engineer</role>
</row>
</rows>
El exterior rows el elemento es la raíz del documento, porque un documento XML bien formado debe tener exactamente un elemento de nivel superior que envuelva todo lo demás. El convertidor le permite cambiar el nombre tanto de la raíz como del elemento por fila, para que pueda producir <catalog><product>...</product></catalog> en cambio, cuando eso es lo que espera su objetivo. Los nombres de las columnas se convierten en nombres de etiquetas, que es donde muerde la primera restricción real, porque no todos los encabezados de las columnas son etiquetas XML legales.
¿Por qué se cambian algunos nombres de columnas?
Los nombres de los elementos XML no son de forma libre. La especificación dice que un nombre debe comenzar con una letra o un guión bajo y luego puede contener letras, dígitos, guiones, puntos y guiones bajos, pero no espacios ni la mayoría de los puntos, y es posible que no comience con un dígito. Una columna de hoja de cálculo llamada First Name investigaciones operacionales Unit Price ($) investigaciones operacionales 2024 Total es un encabezado perfectamente bueno y una etiqueta XML ilegal. Si se emite un convertidor <First Name> el documento no analizaría en absoluto.
Entonces, la herramienta desinfecta el nombre de cada columna en una etiqueta válida. Los espacios y los caracteres ilegales se vuelven subrayados, entonces First Name se convierte en First_Name, y un nombre que comienza con un dígito recibe un prefijo de guión bajo 2024 Total se convierte en _2024_Total. Si dos columnas se desinfectan en la misma etiqueta, o el encabezado realmente repite un nombre, los duplicados obtienen un sufijo numérico, por lo que ninguna columna sobrescribe silenciosamente otra y la herramienta le advierte cuando lo ha hecho. La garantía importante es que sólo se ajustan los nombres de las etiquetas; los datos dentro de cada celda se pasan intactos. Si necesita conservar exactamente las etiquetas originales, el modo de atributo, que se trata a continuación, suele encajar mejor porque los nombres de los atributos enfrentan las mismas reglas, pero también puede optar por llevar el encabezado como valor en otro lugar.
¿qué pasa con las comas y cotizaciones dentro de un valor?
Esta es la parte que rompe los convertidores ingenuos y vale la pena entenderla. CSV tiene una convención de cotización, formalizada en RFC 4180, para valores que contienen el delimitador o un salto de línea. Dicho valor está envuelto en comillas dobles, y cualquier comilla doble literal que contenga está escrita como dos comillas dobles. Entonces, un campo de empresa que se mantiene Hopper, Grace se almacena en el CSV como "Hopper, Grace", y una nota leyendo she said "hi" se almacena como "she said ""hi""".
Un convertidor que divide cada línea en comas alterará ambas, convirtiendo un campo en dos y dejando cotizaciones perdidas en todas partes. Esta herramienta utiliza un analizador de máquina de estados adecuado que rastrea si está dentro de un campo cotizado, por lo que una coma incrustada, una cotización incrustada e incluso una nueva línea dentro de un valor cotizado se leen como parte del campo único al que pertenecen. Esa es la diferencia entre un cliente nombrado Smith, John llegando como uno <name> elemento y llegar como un récord roto con una columna extra. Si su exportación salió de Excel, Google Sheets o un volcado de base de datos, es casi seguro que utilice esta cotización y analizarla correctamente no es opcional.
Una vez que el valor se analiza de forma segura, aún debe ser seguro para XML, que es un problema de escape independiente. Cinco caracteres son especiales en XML y los tres que importan en el texto del elemento son el signo comercial, el signo menor que y el signo mayor que. Una celda que contiene Ben & Jerry's investigaciones operacionales x < y produciría XML no válido si se escribe literalmente, por lo que el convertidor los reemplaza con entidades predefinidas &, <y >. En los valores de los atributos también se escapa la doble cotización. Este escape es lo que garantiza los análisis de salida sin importar lo que contengan los datos.
¿Cada celda debe ser un elemento o un atributo?
XML le brinda dos lugares para poner un valor: como texto de un elemento secundario o como atributo en el elemento de fila. El convertidor admite ambos y cuál tiene razón depende completamente del sistema que leerá el archivo. El modo Elemento produce la forma legible y anidable:
<row>
<name>Ada</name>
</row>
El modo atributo colapsa toda la fila en un único elemento de cierre automático:
<row name="Ada" role="Engineer"/>
Así es como se comparan los dos en las dimensiones que normalmente lo deciden:
| ponderación | Elementos infantiles | atributos |
|---|---|---|
| interés | Mayor, un valor por línea | Más denso, una fila por línea |
| Tamaño del archivo | Más grandes, etiquetas repetidas | Más pequeño |
| Puede anidar más tarde | sí | prohibido |
| Valores repetidos por columna | Permitido | Un valor por nombre de atributo |
| Ajuste típico | Datos estilo documento, feeds | Registros compactos, configuración |
Como regla general, si los datos son planos y tipo registro y el lector los quiere pequeños, los atributos están bien; Si los datos pueden crecer en estructura más tarde, o un humano los leerá, los elementos son los predeterminados más seguros. Cuando no está seguro de lo que quiere el sistema consumidor, los elementos son la opción más conservadora porque cualquier cosa que acepte atributos también se puede adaptar a los elementos, pero no siempre ocurre lo contrario.
Cómo utilizar el convertidor CSV a XML
Paso 1: Pegue su CSV
Pegue o escriba su CSV en el cuadro de entrada. Un bloque copiado directamente de Excel o Google Sheets funciona, al igual que el contenido de a .csv archivo, incluidos los campos citados que contienen comas o saltos de línea.
Paso 2: establece las opciones
Deje el delimitador en detección automática o elija uno explícitamente, confirme si la primera fila es un encabezado, establezca los nombres de los elementos raíz y fila y elija si cada celda se convierte en un elemento secundario o un atributo. También puede alternar la declaración XML y cambiar entre salida sangrada y minificada.
Paso 3: Convertir
Haga clic en Convertir a XML. La herramienta analiza cada fila, desinfecta los nombres de las columnas en etiquetas válidas, escapa de los caracteres de marcado y ensambla un documento bien formado, advirtiéndole sobre columnas renombradas o filas irregulares.
Paso 4: Copiar o descargar
Copie el XML a su portapapeles o descárguelo como .xml archivo. Si la forma no es la adecuada para el sistema de destino, ajuste los nombres de los elementos o cambie entre el modo de elemento y atributo y vuelva a convertir.
¿por qué detectar automáticamente el delimitador?
No todos los "CSV" está separado por comas. Las exportaciones de lugares europeos suelen utilizar un punto y coma, porque la coma es el separador decimal en esas regiones, y los datos extraídos de una base de datos o de un registro suelen estar separados por pestañas. Un convertidor bloqueado en comas leería un archivo de punto y coma como una única columna ancha y produciría tonterías. Esta herramienta detecta el delimitador probando coma, punto y coma, pestaña y tubería y seleccionando lo que produzca un recuento de columnas consistente en las primeras filas, lo cual es una señal mucho más confiable que la frecuencia sin procesar porque una coma dentro de la prosa aparece con frecuencia pero de manera irregular. Siempre puedes anular la suposición cuando un archivo es inusual, pero para los casos comunes la detección significa que pegas y vas.
Las filas irregulares, donde una línea tiene más o menos campos que el encabezado, son el otro desastre del mundo real. El convertidor incluye filas cortas con elementos vacíos y le advierte en lugar de eliminar datos silenciosamente, para que pueda ver que a la fila 47 le faltaban sus dos últimos campos en lugar de descubrirlos aguas abajo. Los campos adicionales más allá del encabezado obtienen nombres de columnas genéricos, por lo que no se pierde nada, y la advertencia le indica exactamente cuántas filas se vieron afectadas, lo que generalmente es suficiente para rastrear el problema hasta un delimitador perdido en la fuente. Si desea inspeccionar un archivo desordenado antes de convertirlo, el Visor CSV lo representa como una tabla con el mismo analizador tolerante, que suele ser la forma más rápida de detectar un delimitador perdido o una cotización no cerrada antes de que se convierta en una salida con formato incorrecto.
Donde el convertidor CSV a XML encaja con todo lo demás
La conversión de datos rara vez es de un solo salto. Es posible que el mismo CSV que necesita convertirse en XML hoy deba convertirse en JSON mañana para una API REST o un lote de inserciones SQL para una carga de base de datos. El Convertidor CSV a JSON maneja el objetivo JSON con el mismo analizador RFC 4180 y el Convertidor CSV a SQL convierte las mismas filas en declaraciones de inserción. Cuando los datos ya son XML y necesitas ir en sentido contrario, el Convertidor XML a JSON y el Convertidor JSON a XML cubra ambas direcciones del límite XML-JSON y utilizarán las mismas convenciones de atributos y texto que sigue esta herramienta, por lo que el viaje de ida y vuelta es predecible.
Para un panorama más amplio, el Guía de CSV a JSON profundiza en el análisis de las mismas exportaciones complicadas, el Guía JSON a XML explica el mapeo de elementos y atributos desde el lado JSON y el Privacidad de datos en herramientas en línea el artículo explica por qué es importante hacer todo esto en el navegador cuando el CSV contiene nombres y direcciones de correo electrónico. Como todo en Toolz.dev, el convertidor se ejecuta completamente en su navegador, por lo que los datos que convierte nunca salen de su máquina.
Preguntas frecuentes
¿cómo convierto un archivo CSV a XML?
Pegue el CSV en el cuadro de entrada, confirme la configuración del delimitador y del encabezado y haga clic en Convertir a XML. La primera fila se lee como los nombres de las columnas y cada fila siguiente se convierte en un elemento XML cuyas etiquetas secundarias llevan el nombre de esas columnas. Luego puede copiar el resultado o descargarlo como un archivo.xml.
¿qué sucede con la fila del encabezado CSV?
Cuando "la primera fila es encabezado" está activado, las celdas del encabezado se convierten en los nombres de elementos XML para cada fila de datos. Los nombres se desinfectan en etiquetas XML válidas, por lo que " Nombre" se convierte en Nombre_Nombre y se cambia el nombre de una columna duplicada con un sufijo numérico. Si desactiva la opción de encabezado, las columnas se denominan columna_1, columna_2, etc.
¿Cada celda debe ser un elemento o un atributo?
Depende de que el sistema lea el XML. El modo Elemento escribe una estructura anidable legible con una etiqueta por valor, mientras que el modo de atributo colapsa una fila en un solo elemento compacto con un atributo por columna. Este convertidor admite ambos, así que elija el que espera su esquema o destino de importación; Los elementos son el valor predeterminado más seguro cuando no está seguro.
¿el convertidor maneja comas dentro de un valor?
Sí. Siguiendo RFC 4180, un valor que contiene una coma, una comilla doble o un salto de línea se envuelve en comillas dobles en el CSV, y una comilla incrustada se escribe como dos comillas. El analizador lee esos campos citados como un valor único en lugar de dividirlos, por lo que "Hopper, Grace" permanece en un elemento.
¿qué delimitadores son compatibles?
Coma, punto y coma, pestaña y tubería. De forma predeterminada, la herramienta detecta automáticamente el delimitador eligiendo el que produce un número constante de columnas en las primeras filas, que maneja correctamente los archivos de punto y coma europeos y las exportaciones separadas por pestañas. También puedes seleccionar el delimitador manualmente.
¿Por qué se cambian algunos de los nombres de mis columnas en XML?
Los nombres de los elementos XML no pueden contener espacios ni la mayoría de la puntuación y no pueden comenzar con un dígito o guión. El convertidor reemplaza caracteres ilegales con guiones bajos y prefija un nombre que comienza con un dígito, por lo que la salida siempre está bien formada. Los datos originales de cada celda nunca cambian, solo los nombres de las etiquetas.
¿Se cargan mis datos csv en un servidor?
No. Toda la conversión se ejecuta en su navegador con JavaScript. Nada de lo que pega se transmite, registra o almacena, y la herramienta sigue funcionando sin conexión de red una vez que se ha cargado la página, lo que mantiene privados los nombres, correos electrónicos y otros datos de su CSV.
¿puedo convertir XML nuevamente a CSV o JSON?
Esta herramienta convierte CSV a XML. Para remodelar los datos de otra manera, use el convertidor de XML a JSON y use el convertidor de CSV a JSON cuando su objetivo sea JSON en lugar de XML. Todos ellos ejecutan el lado del cliente con las mismas garantías de privacidad.



