解决java中的XML问题

时间:2014-10-15 09:59:06

标签: java xml parsing

所以我关注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的好方法有任何其他建议请分享。感谢

3 个答案:

答案 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)

您需要创建一个类文件夹,在eclipse中您可以看到this,在netbeans中看到this,或者没有任何IDE,您可以看到this。最后你要试试这个:

  

parser.parse(SAXParserDemo.class.getResourceAsStream(“/ employees.xml”),handler);

而不是:

  

parser.parse(ClassLoader.getSystemResourceAsStream(“employees.xml”),handler);