XML :: Parser在大文件上死掉

时间:2014-04-02 14:57:56

标签: xml perl openstreetmap

我正在使用Perl脚本从OSM文件中提取POLY:https://github.com/sev-/osm/blob/master/getbound.pl

最近我遇到一个大文件(大约60M)的问题:

curl -XPOST "http://overpass-api.de/api/interpreter" -d"data=[timeout:900];(node(56.59,60.0,56.99,60.96);<);out;" > e.osm
perl getbound.pl -file e.osm 1104258 > e.poly
>unclosed token at line 173936, column 2, byte 9999947 at /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level/XML/Parser.pm line 187.

XML文件格式正确,提到的行看起来很好,当我删除行时,错误消息根本不会改变。看起来库中的某个字节计数器有溢出。

任何帮助将不胜感激! 谢谢

1 个答案:

答案 0 :(得分:5)

替换

open my $file, '<', $filename;
read $file, $osmdata, 10_000_000;

open my $file, '<', $filename;
local $/;
$osmdata = <$file>;