2015-06-06 6 views
0

Я пытаюсь обработать файл дампа 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 &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(); 
     } 
    } 
} 
+0

У меня нет ответа, но я просто хочу сказать: хорошо, что вы начали рано, документируя себя! Это фантастическая привычка. У вас могут быть ужасные шаблоны проектирования (я не могу сказать), но документация может сделать ваш код по крайней мере понятным в 90% случаев. Конечно, лучше писать хороший код, но в крайнем случае вы можете отказаться от документов во время рефакторинга. –

ответ

0

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

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(); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^