xml - 解析 Wiki XML 转储 ver0.4 变得很困难

标签 xml perl parsing mediawiki wikipedia

我正在尝试使用“Parse-MediaWikiDump-1.0.4”和“Wikiprep.pl”脚本来解析维基百科 XML 转储。我想这个脚本在 ver0.3 Wiki XML Dumps 上工作正常,但在最新的 ver0.4 Dumps 上不工作。我收到以下错误。

无法在 wikiprep.pl 第 390 行通过包“Parse::MediaWikiDump::Pages”找到对象方法“page”。

此外,在“Parse-MediaWikiDump-1.0.4”文档下@ http://search.cpan.org/~triddle/Parse-MediaWikiDump-1.0.4/lib/Parse/MediaWikiDump/Pages.pm ,我读到“限制版本 0.4 此类已更新以支持来自 MediaWiki 实例的版本 0.4 转储文件,但它目前不支持这些文件中可用的任何新信息。”

任何变通办法都会帮助我进入下一个阶段。

注意:有人可能想知道为什么我们不能直接使用 SAX 或 STAX 解析器来代替,维基百科转储是一个 25GB 以上的单个文件,堆栈/内存问题是显而易见的。因此,上面的 perl 脚本解决了这个问题,但目前我遇到了这个版本问题。

最佳答案

任何流式解析器都应该可以正常工作(DOM 解析器会崩溃)。尝试 XML::Twig , 请记住在每条主要记录后刷新(如果你想打印出 XML)或清除(如果你不关心 XML)。

或者只使用 XML::Parser直接地。这就是 XML::TwigParse::MediaWikiDump 的内容。正在使用引擎盖来解析 XML。

关于xml - 解析 Wiki XML 转储 ver0.4 变得很困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981204/

相关文章:

ios - 使用 NSDateFormatter 解析自定义日期

xml - 使用 PowershellWhere-Object 过滤 xml

java - Actionbarsherlock 在 Android 4.x 中不会显示菜单项

perl - 确定程序启动后加载的模块

database - 使用 Perl 自动生成和迁移数据库模式

regex - 如何验证用户输入中的 Perl 正则表达式?

parsing - 如何使用 Parsec 通过特定字符串分隔字符串

javascript - XML 中的正则表达式替换

xml - 如何转义 JSF 中 taglib 文件中的特殊字符?

java - 如何轻松解析自定义编程语言