Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用gwtwiki“处理wiki转储”;用法:解析器<;XML-FILE>&引用;错误_Java_Xml_Eclipse_Wikimedia Dumps_Bliki - Fatal编程技术网

Java 使用gwtwiki“处理wiki转储”;用法:解析器<;XML-FILE>&引用;错误

Java 使用gwtwiki“处理wiki转储”;用法:解析器<;XML-FILE>&引用;错误,java,xml,eclipse,wikimedia-dumps,bliki,Java,Xml,Eclipse,Wikimedia Dumps,Bliki,我正在尝试使用gwtwiki和java处理wikimedia转储文件(例如:)。我对java非常陌生(我可以理解并编写简单的java脚本),我正在使用eclipse。我已经导入了gwtwiki项目并尝试运行DumpExample.java,我得到了Usage:Parser响应错误 我不知道在哪里定义.bz2转储文件的路径,并尝试至少编辑用法:Parser对其他内容的错误响应,但即使尝试一步一步地运行它或添加更多代码行(如System.out.println(“test”);我也得到了相同的结果

我正在尝试使用gwtwiki和java处理wikimedia转储文件(例如:)。我对java非常陌生(我可以理解并编写简单的java脚本),我正在使用eclipse。我已经导入了gwtwiki项目并尝试运行DumpExample.java,我得到了
Usage:Parser
响应错误

我不知道在哪里定义.bz2转储文件的路径,并尝试至少编辑用法:
Parser
对其他内容的错误响应,但即使尝试一步一步地运行它或添加更多代码行(如
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();
        }
    }
}
package info.bliki.wiki.dump;
导入org.xml.sax.SAXException;
/**
*读取压缩或未压缩Wikipedia XML转储的演示应用程序
*文件(取决于给定的文件扩展名.gz、.bz2或
*.xml)并打印标题和wiki文本。
* 
*/
公共类转储示例{
/**
*打印转储中所有wiki页面的标题内容。
* 
*/
静态类DemoArticleFilter实现IArticleFilter{
公共作废进程(WikiArticle页面、Siteinfo Siteinfo)引发SAX异常{
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());
}
}
/**
*打印包含“真实”内容的wiki页面的所有标题
*(即标题没有名称空间前缀)(键==0)。
*/
静态类DemoMainArticleFilter实现IArticleFilter{
公共作废进程(WikiArticle页面、Siteinfo Siteinfo)引发SAX异常{
if(page.isMain()){
System.out.println(page.getTitle());
}
}
}
/**
*打印作为模板的wiki页面的所有标题(键==10)。
*/
静态类DemoTemplateArticleFilter实现IArticleFilter{
公共作废进程(WikiArticle页面、Siteinfo Siteinfo)引发SAX异常{
if(page.isTemplate()){
System.out.println(page.getTitle());
}
}
}
/**
*打印属于类别的wiki页面的所有标题(键==14)。
*/
静态类DemoCategoryArticleFilter实现IArticleFilter{
公共作废进程(WikiArticle页面、Siteinfo Siteinfo)引发SAX异常{
if(page.isCategory()){
System.out.println(page.getTitle());
}
}
}
/**
*@param args
*/
公共静态void main(字符串[]args){
如果(args.length==1){
系统输出打印(“测试”);
系统输出打印(“测试”);
系统输出打印(“测试”);
系统输出打印(“测试”);
System.err.println(“usagesss:Parser”);
System.out.println(“test2”);
系统退出(-1);
}
//字符串bz2Filename=
//“c:\\temp\\dewikiversity-20100401-pages-articles.xml.bz2”;
字符串bz2Filename=args[0];
试一试{
IArticleFilter处理程序=新的DemoArticleFilter();
WikiXMLParser wxp=新的WikiXMLParser(bz2Filename,handler);
wxp.parse();
}捕获(例外e){
e、 printStackTrace();
}
}
}

迟交答案,可能会对你有所帮助,或者如果你继续前进,可能会帮助下一个绊倒在这篇文章上的人,我正在使用以下实现:

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

我没有答案,但我只想说:很高兴你早点开始记录你自己!这是一个很好的习惯。您可能有糟糕的设计模式(我不知道),但文档至少可以让您的代码在90%的时间内都可以理解。当然,编写好的代码更好,但在必要的时候,重构时可以依赖文档。