Como posso converter um arquivo CSV para XML?
Existe algum software para o Ubuntu?
Como posso converter um arquivo CSV para XML?
Existe algum software para o Ubuntu?
Respostas:
No site da comunidade sobre conversão, há um link para uma ferramenta de linha de comando chamada csv2xml . Como não é mantido, convém escolher outra opção.
Também há menção de uma ferramenta java chamada csv2xml (aviso: o site está em alemão) e uma ferramenta de linha de comando chamada ff-extractor .
O link também tem referências a Python, Perl, PHP, XSLT, mas isso significa que você precisa codificar o conversor.
Quando você conhece o formato do csv
arquivo e a estrutura necessária no xml
arquivo, é bastante simples criar um script que possa lidar com a conversão.
Pegue o arquivo simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Você pode criar o seguinte xml
arquivo:
<?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>
Com o seguinte 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
Mesmo que você nunca tenha codificado antes, acho que isso deve ser fácil de usar e modificar. O arquivo é lido linha por linha no while
loop.
IFS
é o especificador de campo interno. O IFS=$','
declara que o valor do separador de campos é uma vírgula. Isso é padrão para um arquivo CSV, mas pode ser alterado conforme necessário para corresponder ao formato do arquivo de entrada.
O -r
argumento para o read
comando diz para tratar qualquer barra invertida em seu arquivo como parte de seus dados, e não como uma fuga para o seguinte caractere especial.
O -a arry
argumento coloca cada coluna do seu arquivo em uma matriz (nomeada arry
). As colunas neste exemplo são nome, idade, país. Em outras palavras, os valores entre as vírgulas. Portanto, cada coluna na linha é armazenada em uma matriz.
Em seguida, o texto necessário xml
é apenas contornado os valores e a xml
linha é anexada ao arquivo de saída com echo
.
while IFS=$',' read -r -a arry
, é útil para outra. Obrigado.
"Somename, Jack"
lugar de Jack
no arquivo de entrada?
Uma solução bastante amigável (ou seja, fácil para quem gosta de coisas como eu) para o desafio de conversão de CSV para XML é usar um bom editor XML de plataforma cruzada que possui esse recurso embutido. (Eu o usei no Ubuntu e no Mac OSX 10.10.5; ele também tem o Windows executável.)
Como mencionado, é um editor XML, mas inclui "importação" de CSV para XML (e Excel para XML) em seu menu principal:
Ele converteu um arquivo CSV de 31Mb para mim (um despejo de um banco de dados da biblioteca de 20.000 entradas) em cerca de 15 segundos, fornecendo um arquivo XML bem formado para salvar e manipular.
Como editor, ele tem muitos outros recursos de boas-vindas (detalhados no link acima). Não consigo encontrar menção a nenhuma licença, mas isso está incluído no "README":
XMLSpear é um software gratuito para uso pessoal.
Envie seus comentários para xmlspear@donkeydevelopment.com ou no fórumhttp://donkeydevelopment.com/forums
.O uso comercial deve ser aprovado pelo desenvolvimento de burros.
Envie um email para xmlspear@donkeydevelopment.com com o assunto "solicitação de licença".
O leia-me também inclui o conteúdo de um arquivo .desktop.
Faz o trabalho bem para mim no Ubuntu 18.04 LTS (Gnome).
Sou um grande fã do BaseX
qual parece ter uma capacidade de importação:
http://docs.basex.org/wiki/CSV_Module
Pode-se destacar que é aparentemente mais fácil usar um aplicativo da Web:
https://webapps.stackexchange.com/q/123959/24327
O que equivale a um plug-in ou extensão ao navegador que funciona com as folhas do Google.
Sinto sua dor porque é um utilitário aparentemente simples que deve estar disponível no apt.
Eu sugiro que você ou alguém escreva códigos em Python. Python é fácil de aprender e resolver seu problema facilmente. Possui módulos CSV e XML . Minha sugestão leva em consideração que talvez você precise ter seus próprios nomes para elementos XML ou outros requisitos complexos (como converter a última coluna CSV em atributo da última, mas uma coluna).
Há toneladas de tutoriais online sobre Python.