2010-06-05 32 views
4

我試圖用「解析 - MediaWikiDump-1.0.4」與「Wikiprep.pl」腳本一起解析XML維基百科轉儲。我猜這個腳本可以在ver0.3 Wiki XML Dumps中正常工作,但不能與最新的ver0.4 Dump一起使用。我收到以下錯誤。解析XML維基轉儲ver0.4剛韌

通過包無法找到對象的方法「頁」,「解析:: MediaWikiDump ::網頁」,wikiprep.pl線390

此外,「解析 - MediaWikiDump-1.0.4」的文件下@http://search.cpan.org/~triddle/Parse-MediaWikiDump-1.0.4/lib/Parse/MediaWikiDump/Pages.pm,我讀了「LIMITATIONS Version 0.4」這個類已更新爲支持來自MediaWiki實例的0.4版轉儲文件,但它目前不支持這些文件中提供的任何新信息。「

任何變通,會幫我去一個新的水平。

注:一個可能想知道爲什麼我們不能直接使用SAX或STAX解析器代替,維基百科轉儲是25GB加上單個文件,堆/內存問題是顯而易見的。因此,上面的Perl腳本解決了這個問題,但目前我堅持這個版本問題。

回答

2

任何流解析器應該工作得很好(DOM解析器會炸燬)。嘗試XML::Twig,只記得在每個主要記錄後刷新(如果你想打印出XML)或清除(如果你不關心XML)。

或者只是使用XML::Parser直接。這就是XML::TwigParse::MediaWikiDump正在使用的底層解析XML。

+0

非常感謝...這個信息將是非常有益的,我很感激。 – syed 2010-06-05 23:15:55

1

替換 「$ pages->頁面」(它在腳本中出現了兩次)以 「$ pages->下一步」。那有點訣竅;對我來說,它完成了XXX.hgw.xml,XXX.anchor_text和XXX.related_links文件,但後來陷入了循環...

糾正:看着我的XXX.hgw.xml文件的結尾,它停止中等字...

0

使用MediaWiki::DumpFile::Compat,而不是過時的Parse::MediaWikiDump。欲瞭解更多信息,請致電see here

是的,使用

$pages->next 

約書亞的建議。爲我工作...

+0

我知道這是一個很老的討論。但我試圖讓Wikiprep.pl開始維基百科的最新轉儲。 我將「use Parse :: MediaWikiDump」替換爲「使用MediaWiki :: DumpFile :: Compat」,「 - > page」替換爲「 - > next」。那是你所暗示的一切嗎?它仍然不適合我,所以我想也許有一些明顯的我失蹤了。 – 2013-04-05 05:05:12