[英]Parse large XML file with java
I'm trying to read a huge XML file(2GB). 我正在尝试读取一个巨大的XML文件(2GB)。 So, I started of to use STAX and I've to use steam input. 因此,我开始使用STAX,而不得不使用蒸汽输入。 Below is the code 下面是代码
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);
Output returns error: 输出返回错误:
here
Error 4:javax.xml.stream.XMLStreamException: java.net.MalformedURLException
Reader2:null
How do I resolve this error? 如何解决此错误?
Method getSystemResourceAsStream
opens for reading, a resource of the specified name from the search path used to load classes . 方法getSystemResourceAsStream
打开以供读取,该名称是用于加载class的搜索路径中具有指定名称的资源 。
You are going to read a file so open a file stream: 您将要读取文件,因此打开文件流:
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);
Following line appears to be throwing an exception 下一行似乎引发异常
reader = factory.createXMLStreamReader(ClassLoader.getSystemResourceAsStream(filePath)); reader = factory.createXMLStreamReader(ClassLoader.getSystemResourceAsStream(filePath));
which causes reader to remain null. 这会使阅读器保持为空。 Most probably class loading is not successful. 类加载很可能不成功。
我认为您的文件路径不是有效的网址 :请尝试: file:///D:/Data/sample.xml
ClassLoader.getSystemResourceAsStream(...)
is using the system
classloader
. ClassLoader.getSystemResourceAsStream(...)
正在使用system
classloader
。 Just use this.getClass().getResoruceAsStream(...)
. 只需使用this.getClass().getResoruceAsStream(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.