Обработка дампов вики с помощью gwtwiki Ошибка "Использование: Parser <XML-FILE>"

Я пытаюсь обработать файл дампа Викимедиа (например: http://dumps.wikimedia.org/enwiki/20150304/enwiki-20150304-pages-meta-history9.xml-p000897146p000925000.bz2), используя gwtwiki и java. Я довольно новичок в Java (я мог понимать и писать простые сценарии Java), и я использую затмение. Я импортировал проект 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 &quot;Real&quot; 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();
        }
    }
}

1 ответ

Поздний ответ, может быть, это поможет вам или, если вы пошли дальше, может, это поможет следующему человеку, наткнувшемуся на этот пост, я использую эту реализацию:

    File f = new File("c:/path/to/svwiki-20151102-pages-meta-current.xml");
    WikiXMLParser wxp;
    try {
        wxp = new WikiXMLParser(f, handler);
        wxp.parse();
    } catch (IOException e) {   
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    }
Другие вопросы по тегам