Két programot találsz itt. Ami a következő három:
Mindkét program Linux(Ubuntu) felett fut. A csv_xml létjogosultságát az indokolja, hogy botrányosan hosszú ideig tart az xml-nek az OpenOffice.org ( OOo ) táblázatkezelőbe töltése. Lényegesen rövidebb ideig tart a konvertálás és a csv betöltése. ( Megjegyzem: ha az xml-t akarod betölteni az OOo táblázatkezelőbe, akkor előtte telepítsd az OOo adatbázis kezelőt! )
Bár az NMHH adatbázis - első sora <?xml version="1.0" encoding="ISO-8859-1"?> szerint - ISO-8859-1 kódolásúnak hazudja magát, valójában ISO-8859-2 WINDOWS-1250 kódolású.
Másold egy munkakönyvtárba a gen, az 5di_xml és a csv_xml programot valamint a c.fmt r.fmt formátumállományokat. Megtalálod a ../futás könyvtárban.
A formátumállományok jók a 2011-08-28-i NMHH adatbázishoz, de leírom, hogyan tudod módosítani. A formátumállomány egyszerű szöveges állomány, amiben a rekord ( sor ) mezőire ( celláira ) a mezők sorszámaival tudsz hivatkozni. Például az első mezőre ( 'A' oszlop ) [0]-ként vagy {0}-ként. Az első [0] forma a mező tartalmának változatlan kiírását jelenti. Kivétel a dátum formátumú, mert annak csak az első 10 karakteréét ( éééé-hh-nn ). Másodiknál a tartalmat balra igazítva 10 karakter szélesen írja ki a program; ezt használd a hívójel mező kiírásához. A többi karakter változatlanul kiírásra kerül. Karakterkódolása egyezzen meg az xml-ével.
Töltsd le ugyanide az NMHH adatbázisokat ( call_sign_book.xml, relay_list.xml ) a http://www.nmhh.hu/index.php?id=hir&cid=8112&mid=2926 helyről.
Terminálból futtasd:
$ ./5di_xml <call_sign_book.xml 5di_xml: BBS - NMHH hívójelkönyv konvertáló GG630504 HG9IEG 2011-08-25 [0] Partner code [1] Name of Licensee [2] Country [3] ZIP [4] City [5] Street, House [6] License Number [7] Call sign [8] Community or private [9] State of Licence [10] Level of Exam [11] Morse [12] License date [13] Validity [14] Chief operator $
Ellenőrizd, megfelelő-e a c.fmt formátumállomány. Ha nem, akkor egy egyszerű szövegszerkesztővel módosítsd. Karakterkódolása egyezzen meg az xml-ével.
{7}[1]; [4] [5]; H-[3] {7}[8] [10] [11] [13]
Ugyanez az ellenőrzés a relay_list.xml-re.
$ ./5di_xml <relay_list.xml 5di_xml: BBS - NMHH hívójelkönyv konvertáló GG630504 HG9IEG 2011-08-25 [0] Partner code [1] Licensee [2] Community or private [3] Chief operator [4] Call sign [5] License Number [6] Validity [7] QTH city [8] Mode [9] TxFreq [10] Rx Freq [11] ERP (dBW) [12] Gain (dB) [13] Direction of radiation [14] Geo. Coord. X [15] Geo. Coord. Y [16] Height asl [17] Antenna height (m) [18] Type of equipment [19] Tx Output power [dBW] [20] Type of antenna [21] Direction $
És r.fmt-re.
{4}[1] - [3]; [7] {4}[2] [6]
Mint láttad, az 5di_xml program a szabványos bemenetről a szabványos kimenetre dolgozik. Ha nem kap paramétert, akkor az első rekordot írja ki a mezők sorszámaival együtt. Ha paraméterként megkapja a formátumállomány azonosítóját, akkor aszerint kiírja a rekordokat - az elsőt kivéve.
Ennek megfelelő a gen program tartalma:
#!/bin/sh ./5di_xml c.fmt <call_sign_book.xml >cbook.dat ./5di_xml r.fmt <relay_list.xml >>cbook.dat iconv -f WINDOWS-1250 -t UTF-8 <cbook.dat >cbook_utf_8.dat ./csv_xml <call_sign_book.xml | iconv -f WINDOWS-1250 -t UTF-8 >call_sign_book.csv ./csv_xml <relay_list.xml | iconv -f WINDOWS-1250 -t UTF-8 >relay_list.csv
Emlékeztetlek, hogy az 5di_xml nem végez karakterkódolás-módosítást, tehát a cbook.dat kódolása megegyezik az xml-ekével, ami ISO-8859-2. Ha más kódolás kell, vagy az UTF-8 kódolásúra nincs szükséged, egyszerű szövegszerkesztővel módosítsd a gen programot. Ugyancsak módosítsd, ha az eredményállományokat más könyvtárba akarod másolni.
A csv_xml programon semmit sem kell beállítanod. Szabványos bemenetről olvas és szabványos kimenetre ír. Módosíthatod vagy elhagyhatod az utólagos átkódolást a gen programban.