[英]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.