XML::Parser 在大文件上死掉

标签 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 文件格式良好,所提到的行看起来很好,并且当我删除该行时,错误消息根本没有改变。看起来库内的某些字节计数器存在溢出。

如有任何帮助,我们将不胜感激! 谢谢

最佳答案

替换

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

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

关于XML::Parser 在大文件上死掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22815417/

相关文章:

javascript - OpenLayers 中的最小/最大缩放级别

xml - 如何用JAXB注释Grails域类中的关联?

java - 在 TransformerFactory 中设置特性 accessExternalDTD

javascript - 用于大型 html 的 DOMParser

Perl IPv6 地址扩展/解析

perl - 如何避免在连接 (.) 中使用未初始化的值?在 perl v5.8.4

java - 无法将类型 'java.util.ArrayList' 的属性值转换为所需类型 'javax.xml.ws.handler.HandlerResolver'

perl - 为什么 perl 会针对不同类型的警告提示不同的行?

networkx - 使用 OSMnx 提取约束多边形

javascript - 传单标记在某些情况下不显示