繁体   English   中英

使用Java解析大型XML文件

[英]Parse large XML file with java

我正在尝试读取一个巨大的XML文件(2GB)。 因此,我开始使用STAX,而不得不使用蒸汽输入。 下面是代码

filePath = "D:/Data/sample.xml"; //Correct path
String tagContent = null;
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = null;
try{
    System.out.println("here");
    reader = factory.createXMLStreamReader(ClassLoader.getSystemResourceAsStream(filePath));
    System.out.println("Reader1:" + reader);
}
catch(Exception e)
{
    System.out.println("Error 4:" + e);
}
System.out.println("Reader2:" + reader);

输出返回错误:

here
Error 4:javax.xml.stream.XMLStreamException: java.net.MalformedURLException
Reader2:null

如何解决此错误?

方法getSystemResourceAsStream 打开以供读取,该名称是用于加载class的搜索路径中具有指定名称的资源

您将要读取文件,因此打开文件流:

        filePath = "D:/Data/sample.xml"; //Correct path
        String tagContent = null;
        XMLInputFactory factory = XMLInputFactory.newInstance();
        XMLStreamReader reader = null;
        try{
            System.out.println("here");
            reader = factory.createXMLStreamReader(new FileInputStream(new File(filePath)));
            System.out.println("Reader:" + reader);
        }
        catch(Exception e)
        {
            System.out.println("Error 4:" + e);
        }
        System.out.println("Reader:" + reader);

下一行似乎引发异常

reader = factory.createXMLStreamReader(ClassLoader.getSystemResourceAsStream(filePath));

这会使阅读器保持为空。 类加载很可能不成功。

我认为您的文件路径不是有效的网址 :请尝试: file:///D:/Data/sample.xml

ClassLoader.getSystemResourceAsStream(...)正在使用system classloader 只需使用this.getClass().getResoruceAsStream(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM