我正在尝试使用 gwtwiki 和 java处理 wikimedia 转储文件(例如: http ://dumps.wikimedia.org/enwiki/20150304/enwiki-20150304-pages-meta-history9.xml-p000897146p000925000.bz2)。我对java很陌生(我可以理解和编写简单的java脚本)并且我正在使用eclipse。我已经导入了 gwtwiki 项目并尝试运行 DumpExample.java,但我得到了Usage: Parser <XML-FILE>
响应错误。
我不知道在哪里定义 .bz2 转储文件的路径并尝试至少编辑用法:对其他内容的Parser <XML-FILE>
错误响应,但即使尝试逐步运行它或添加更多内容,我也得到了相同的结果像这样的代码行System.out.println("test");
文档没有解释这应该如何完成,因为我认为对于熟悉 java 的人来说,这应该是非常自我解释的。
现在,我不需要关于如何实现这一目标的分步教程,但我想要一个起点或一些线索,我会自己学习。经过几天的搜索,我发现我什至不知道从哪里开始。我也知道你可以这样说:
了解更多Java!
但我总是通过实际参与这样的项目来学得更好。
DumpExample.java:_
package info.bliki.wiki.dump;
import org.xml.sax.SAXException;
/**
* Demo application which reads a compressed or uncompressed Wikipedia XML dump
* file (depending on the given file extension <i>.gz</i>, <i>.bz2</i> or
* <i>.xml</i>) and prints the title and wiki text.
*
*/
public class DumpExample {
/**
* Print title an content of all the wiki pages in the dump.
*
*/
static class DemoArticleFilter implements IArticleFilter {
public void process(WikiArticle page, Siteinfo siteinfo) throws SAXException {
System.out.println("----------------------------------------");
System.out.println(page.getId());
System.out.println(page.getRevisionId());
System.out.println(page.getTitle());
System.out.println("----------------------------------------");
System.out.println(page.getText());
}
}
/**
* Print all titles of the wiki pages which have "Real" content
* (i.e. the title has no namespace prefix) (key == 0).
*/
static class DemoMainArticleFilter implements IArticleFilter {
public void process(WikiArticle page, Siteinfo siteinfo) throws SAXException {
if (page.isMain()) {
System.out.println(page.getTitle());
}
}
}
/**
* Print all titles of the wiki pages which are templates (key == 10).
*/
static class DemoTemplateArticleFilter implements IArticleFilter {
public void process(WikiArticle page, Siteinfo siteinfo) throws SAXException {
if (page.isTemplate()) {
System.out.println(page.getTitle());
}
}
}
/**
* Print all titles of the wiki pages which are categories (key == 14).
*/
static class DemoCategoryArticleFilter implements IArticleFilter {
public void process(WikiArticle page, Siteinfo siteinfo) throws SAXException {
if (page.isCategory()) {
System.out.println(page.getTitle());
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
if (args.length == 1) {
System.out.println("test");
System.out.println("test");
System.out.println("test");
System.out.println("test");
System.err.println("Usagessss: Parser <XML-FILEZZZZZZ>");
System.out.println("test2");
System.exit(-1);
}
// String bz2Filename =
// "c:\\temp\\dewikiversity-20100401-pages-articles.xml.bz2";
String bz2Filename = args[0];
try {
IArticleFilter handler = new DemoArticleFilter();
WikiXMLParser wxp = new WikiXMLParser(bz2Filename, handler);
wxp.parse();
} catch (Exception e) {
e.printStackTrace();
}
}
}