Stranica: 1/1.
Konverzija CSV u XML
Postano: 08 lip 2017, 10:57
Postao/la kepica
++ u windozama koristim ACCESS za snimanje XML fajla iz CSV datoteke
++ u linuxu to ide još lakše , vidi ovaj link:
https://askubuntu.com/questions/581265/ ... ile-to-xml
ili napravi bash skriptu , poput ove:
Kod: Označi sve
#!/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
s tim da se u HR koristi znak ';' umjesto ',' separatora, pa zamjeni u liniji ... IFS=$';' ... itd.
Re: Konverzija CSV u XML
Postano: 08 lip 2017, 11:29
Postao/la shrike
IFS je dobra varijabla, to me u prvim danima učenja basha dosta ubilo u pojam dok nisam skužio kako/što radi. Hebo sam mater jednom par sati na tu temu Linusu, Stalmanu, GNU i tako ..
Re: Konverzija CSV u XML
Postano: 08 lip 2017, 11:40
Postao/la kepica
evo još jedan link, ako treba ( firebase ) konverzija CSV u JSON format
https://gist.github.com/dsliberty/3de707bc656cf757a0cb
ili odmah na bash skriptu
Kod: Označi sve
#!/bin/bash
# CSV to JSON converter using BASH
# original script from http://blog.secaserver.com/2013/12/convert-csv-json-bash/
# thanks SecaGuy!
# Usage ./csv2json.sh input.csv > output.json
input=$1
[ -z $1 ] && echo "No CSV input file specified" && exit 1
[ ! -e $input ] && echo "Unable to locate $1" && exit 1
read first_line < $input
a=0
headings=`echo $first_line | awk -F, {'print NF'}`
lines=`cat $input | wc -l`
while [ $a -lt $headings ]
do
head_array[$a]=$(echo $first_line | awk -v x=$(($a + 1)) -F"," '{print $x}')
a=$(($a+1))
done
c=0
echo "{"
while [ $c -lt $lines ]
do
read each_line
if [ $c -ne 0 ]; then
d=0
echo -n "{"
while [ $d -lt $headings ]
do
each_element=$(echo $each_line | awk -v y=$(($d + 1)) -F"," '{print $y}')
if [ $d -ne $(($headings-1)) ]; then
echo -n ${head_array[$d]}":"$each_element","
else
echo -n ${head_array[$d]}":"$each_element
fi
d=$(($d+1))
done
if [ $c -eq $(($lines-1)) ]; then
echo "}"
else
echo "},"
fi
fi
c=$(($c+1))
done < $input
echo "}"
dvije napomene:
++ CSV mora imati prvi red s nazivom tagova ( prilikom XML taj red je bolje izostaviti )
++ u ovoj drugoj skripti nisam shvatio gdje se definira separator,
ali ne brinem se oko toga , prije pretvorbe u JSON otvorim CSV datoteku , zatim find/replace znak (;) u separator (,)
Re: Konverzija CSV u XML
Postano: 08 lip 2017, 12:53
Postao/la kepica
JSON fajl nije prošao formalnu provjeru na ovom linku
https://jsonlint.com/
razlozi:
1) imena tagova moraju biti u navodnicima
2) vrijednosti koje nisu numeričke , recimo datum, također mora biti u navodnicima
budući da radim uvijek isti IMPORT JSON u firebase, ovo nije problem , jer mogu formatirati već CSV fajl da zadovoljava , tako da skripta može ostati ovakva kakva jest