ilya先前和我討論到:有沒有可能拿
OpenVanilla 問題分析
輸入法所可能提供的協助
[1] OpenVanilla的詞彙管理架構
實作的方法
材料:地理資訊的 XML 資料表
<place id='1'>
<zh_name>漁人</zh_name>
<en_name>Yuren</en_name>
<lon>121˚ 32' 40"</lon>
<lat>22˚ 1' 5"</lat>
</place>
SQLite3。因此我們得先把XML煮成SQLite3能用的資料。
最懶的方法:XML::Simple
XML::Simple 模組了。
#!/usr/bin/perl -w
use strict;
use XML::Simple;
my $filename=shift or die "Must specify a filename";
my $data=XMLin($filename);
sudo cpan install XML::SAX::Expat
sudo cpan install XML::Simple
my $places=$data->{'place'};
for my $x (sort(keys(%$places))) {
my $d = $places->{$x};
print "INSERT INTO geoinfo (zh_name, en_name, lon, lat) VALUES (",
sqlquote($d->{zh_name}), ", ",
sqlquote($d->{en_name}), ", ",
sqlquote($d->{lon}), ", ",
sqlquote($d->{lat}), ");\\n";
}
sub sqlquote {
my $x=shift;
$x =~ s/\\'/\\'\\'/g;
return "'$x'";
}
print "CREATE TABLE geoinfo (zh_name, en_name, lon, lat);\\n";
print "CREATE INDEX idx_zh_name ON geoinfo (zh_name);\\n";
print "BEGIN;\\n";
並在最後加上
print "COMMIT;\\n";
./gendb.pl source.xml | sqlite3 geoinfo.db
從這裡開始……
註解
Abstract).
lukhnos :: Jun.29.2006 ::
tekhnologia 技術或者藝術 ::
11 Comments »