我正在尝试使用“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::Twig
和 Parse::MediaWikiDump
的内容。正在使用引擎盖来解析 XML。
关于xml - 解析 Wiki XML 转储 ver0.4 变得很困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981204/