使用java解析大型XML文件

时间:2014-03-04 08:50:40

标签: java stax

我正在尝试读取一个巨大的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

如何解决此错误?

4 个答案:

答案 0 :(得分:3)

方法getSystemResourceAsStream 打开以便从用于加载类的搜索路径中读取指定名称的资源。

您将要读取文件以便打开文件流:

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

答案 1 :(得分:0)

以下行似乎正在抛出异常

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

导致读者保持为空。最有可能是类加载不成功。

答案 2 :(得分:0)

我认为你的文件路径不是有效的URL:试试:file:///D:/Data/sample.xml

答案 3 :(得分:0)

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