所以我关注this tutorial,我几乎从SAX解析器示例中复制粘贴代码。我在与java类相同的文件夹中创建了相同的employees.xml文件。我在这行代码中得到的错误是Exception in thread "main" java.lang.IllegalArgumentException: InputStream cannot be null
:
parser.parse(ClassLoader.getSystemResourceAsStream("employees.xml"),handler);
如果有任何帮助,您可以在此处查看我的其余代码:pastie link
有谁知道如何让它正确读取xml文件?或者如果在java中解析XML的好方法有任何其他建议请分享。感谢
答案 0 :(得分:0)
不要使用ClassLoader,请尝试使用:
InputStream = SAXParserDemo.class.getClassLoader()。getResourceAsStream(" employee.xml");
来源:http://www.coderanch.com/t/369908/java/java/ClassLoader-getSystemResourceAsStream
谢谢, 开发
答案 1 :(得分:0)
ClassLoader
的{{1}}类文档表明,当找不到资源时,它会返回getSystemResourceAsStream
。
因此,建议在调用null
之前确保parser.parse
的结果不为空。
文档也说
从用于加载类的搜索路径中打开以读取指定名称的资源。
所以这意味着它不一定要搜索当前类文件所在的目录,而是搜索一般系统getSystemResourceAsStream
。
如果您只是使用纯Java,则可以在没有类加载器的情况下打开普通CLASSPATH
。如果您的目标是bean或其他一些实现,它们规定了类的位置与XML文件的位置之间的依赖关系,请使用当前类的类加载器,如Dev G的答案中所示。
答案 2 :(得分:0)