¿Cómo puedo convertir un archivo CSV a XML?
¿Hay algún software para Ubuntu?
¿Cómo puedo convertir un archivo CSV a XML?
¿Hay algún software para Ubuntu?
Respuestas:
En el sitio web de la comunidad sobre la conversión hay un enlace a una herramienta de línea de comandos llamada csv2xml . Como no se mantiene, es posible que desee elegir otra opción.
También se menciona una herramienta de Java llamada csv2xml (advertencia: el sitio web está en alemán) y una herramienta de línea de comandos llamada ff-extractor .
El enlace también tiene referencias a Python, Perl, PHP, XSLT, pero eso significa que debe codificar el convertidor usted mismo.
Cuando conoce el formato del csv
archivo y la estructura que necesita en el xml
archivo, es bastante sencillo crear un script que pueda manejar la conversión.
Toma el archivo simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Puede crear el siguiente xml
archivo:
<?xml version="1.0"?>
<Customers>
<Customer>
<Name>Jack</Name>
<Age>35</Age>
<Country>United States</Country>
</Customer>
<Customer>
<Name>Jill</Name>
<Age>22</Age>
<Country>United Kingdom</Country>
</Customer>
</Customers>
Con el siguiente script:
#!/bin/bash
file_in="simple.csv"
file_out="simple.xml"
echo '<?xml version="1.0"?>' > $file_out
echo '<Customers>' >> $file_out
while IFS=$',' read -r -a arry
do
echo ' <Customer>' >> $file_out
echo ' <Name>'${arry[0]}'</Name>' >> $file_out
echo ' <Age>'${arry[1]}'</Age>' >> $file_out
echo ' <Country>'${arry[2]}'</Country>' >> $file_out
echo ' </Customer>' >> $file_out
done < $file_in
echo '</Customers>' >> $file_out
Incluso si nunca ha codificado antes, creo que esto debería ser fácil de usar y modificar. El archivo se lee línea por línea en el while
bucle.
IFS
es el especificador de campo interno. El IFS=$','
declara que el valor del separador de campo es una coma. Esto es estándar para un archivo CSV, pero se puede cambiar según sea necesario para que coincida con el formato del archivo de entrada.
El -r
argumento del read
comando le dice que trate cualquier barra diagonal inversa en su archivo como parte de sus datos en lugar de como un escape para un siguiente carácter especial.
El -a arry
argumento coloca cada columna de su archivo en una matriz (llamada arry
). Las columnas en este ejemplo son nombre, edad, país. En otras palabras, los valores entre las comas. Por lo tanto, cada columna de la línea se almacena en una matriz.
Luego, el texto necesario para xml
se envuelve alrededor de los valores y la xml
línea se agrega al archivo de salida con echo
.
while IFS=$',' read -r -a arry
, es útil para otra. Gracias.
"Somename, Jack"
lugar de Jack
en el archivo de entrada?
Una solución bastante fácil de usar (es decir, fácil para los entusiastas como yo) al desafío de conversión de CSV a XML es usar un buen editor XML multiplataforma que tenga esta característica incorporada. (Lo he usado en Ubuntu y Mac OSX 10.10.5; también tiene Windows ejecutable).
Como se mencionó, es un editor XML, pero incluye "importar" CSV a XML (y Excel a XML) en su menú principal:
Convirtió un archivo CSV de 31Mb para mí (un volcado de una base de datos de la biblioteca de 20,000 entradas) en aproximadamente 15 segundos, dándome un archivo XML bien formado para guardar y manipular.
Como editor, tiene muchas otras características de bienvenida (detalladas en el enlace anterior). No encuentro mención de ninguna licencia para ello, pero esto está incluido en el "LÉAME":
XMLSpear es un software gratuito para uso personal.
Envíe sus comentarios a xmlspear@donkeydevelopment.com o en el forohttp://donkeydevelopment.com/forums
.El uso comercial debe ser aprobado por donkeydevelopment.
Simplemente envíe un correo electrónico a xmlspear@donkeydevelopment.com con el asunto "solicitud de licencia".
El archivo Léame también incluye útilmente el contenido de un archivo .desktop.
Me funciona bien en Ubuntu 18.04 LTS (Gnome).
Soy un gran admirador del BaseX
cual parece tener una capacidad de importación:
http://docs.basex.org/wiki/CSV_Module
Podría señalar que, aparentemente, es más fácil usar una aplicación web:
https://webapps.stackexchange.com/q/123959/24327
Lo que equivale a un complemento o extensión para el navegador que funciona con las hojas de Google.
Siento tu dolor porque es una utilidad aparentemente simple que debería, bueno, estar disponible a través de apt.
Sugeriría que usted o alguien escriba códigos en Python. Python es fácil de aprender y resuelve su problema fácilmente. Tiene tanto módulo CSV como módulos XML . Mi sugerencia tiene en cuenta que es posible que deba tener sus propios nombres para los elementos XML o tener otros requisitos complejos (como convertir la última columna CSV en el atributo de la última pero una columna).
Hay toneladas de tutoriales en línea sobre Python.