Я пытаюсь обработать файл дампа wikimedia (например: http://dumps.wikimedia.org/enwiki/20150304/enwiki-20150304-pages-meta-history9.xml-p000897146p000925000.bz2) с помощью gwtwiki и java. Я довольно новичок в java (я мог понять и написать простые java-скрипты), и я использую eclipse. Я импортировал проект gwtwiki и попытался запустить DumpExample.java, и я получил ошибку ответа Usage: Parser <XML-FILE>
.Обработка wiki-файлов с использованием gwtwiki "Использование: 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();
}
}
}
У меня нет ответа, но я просто хочу сказать: хорошо, что вы начали рано, документируя себя! Это фантастическая привычка. У вас могут быть ужасные шаблоны проектирования (я не могу сказать), но документация может сделать ваш код по крайней мере понятным в 90% случаев. Конечно, лучше писать хороший код, но в крайнем случае вы можете отказаться от документов во время рефакторинга. –