我正在尝试解组我的 xml 文件:
public Object convertFromXMLToObject(String xmlfile) throws IOException {
FileInputStream is = null;
File file = new File(String.valueOf(this.getClass().getResource("xmlToParse/companies.xml")));
try {
is = new FileInputStream(file);
return getUnmarshaller().unmarshal(new StreamSource(is));
} finally {
if (is != null) {
is.close();
}
}
}
但是我得到这个错误:java.io.FileNotFoundException: null (No such file or directory)
这是我的结构:
为什么我无法从资源文件夹中获取文件?谢谢。
更新。
重构后,
网址 url = this.getClass().getResource(“/xmlToParse/companies.xml”);文件 file = new File(url.getPath());
我可以更清楚地看到一个错误:
java.io.FileNotFoundException: /content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml(没有这样的文件或目录)
它试图找到 WEB-INF/classes/ 我在那里添加了文件夹,但仍然出现此错误:(
原文由 Tom Wally 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在尝试将一些 XML 文件加载到我的测试类中时遇到了同样的问题。如果您使用 Spring,正如您的问题所建议的那样,最简单的方法是使用 org.springframework.core.io.Resource - Raphael Rot h 已经提到过的方法。
代码非常简单。只需声明一个 org.springframework.core.io.Resource 类型的字段并用 org.springframework.beans.factory.annotation.Value 注释 它——就像这样:
要获得所需的 InputStream,只需调用
你应该没事:)
但是原谅我,我不得不问一件事:为什么要借助Spring来实现一个XML解析器?有很多内置 :) 例如,对于 Web 服务,有非常好的解决方案可以将您的 XML 编组为 Java 对象并返回……