【问题标题】:Trouble with parsing XML in java [duplicate]在java中解析XML的问题[重复]
【发布时间】:2014-10-15 18:36:03
【问题描述】:

所以我关注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 的好方法的建议,请分享。谢谢

【问题讨论】:

  • @Zhuinden 谁在说安卓?我猜你的评论甚至比澄清任何事情更令人困惑......
  • @GyroGearless 对不起。

标签: java xml parsing


【解决方案1】:

不要使用 ClassLoader,而是尝试使用这个:

InputStream is = SAXParserDemo.class.getClassLoader().getResourceAsStream("employee.xml");


来源:http://www.coderanch.com/t/369908/java/java/ClassLoader-getSystemResourceAsStream

谢谢, 开发

【讨论】:

    【解决方案2】:

    getSystemResourceAsStreamClassLoader 类的文档表明它在找不到资源时返回null

    因此建议在调用parser.parse 之前,先检查getSystemResourceAsStream 的结果是否为空。

    文档还说

    打开读取,用于加载类的搜索路径中指定名称的资源。

    所以表示不一定是搜索当前class文件所在目录,而是一般系统CLASSPATH

    如果你只是使用纯 Java,你可以在没有类加载器的情况下打开一个普通的 FileInputStream。如果您的目标是 bean 或其他一些实现,这些实现指示您的类的位置和 XML 文件的位置之间存在依赖关系,请使用当前类的类加载器,如 Dev G 的回答中所示。

    【讨论】:

      【解决方案3】:

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

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

      代替:

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

      【讨论】:

        猜你喜欢
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        • 2017-10-04
        • 1970-01-01
        • 2012-03-14
        • 2011-11-26
        相关资源
        最近更新 更多