我正在尝试读取一个巨大的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
如何解决此错误?
答案 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(...)
。