【问题标题】:XML Parsing (StAX)| getResourceAsStream from xml file returns nullXML 解析 (StAX)|来自 xml 文件的 getResourceAsStream 返回 null
【发布时间】:2015-06-13 05:13:45
【问题描述】:

所以我知道这是一个非常受欢迎的问题,但是没有可用的解决方案对我有用。

我的代码是一个读取和解析xml文档的示例代码。原文在此链接:http://www.studytrails.com/java/xml/woodstox/java-xml-stax-woodstox-basic-parsing.jsp

我的java文件的相对路径是

 src\com\parser\xml\TestBasicStaxParsing.java

输入文件“employee.xml”与src&bin文件夹和.classpath文件处于同一深度。

顺便说一句,如果这对你有帮助的话,我会在 windows 环境中使用 eclipse。

下面是我要运行的java文件

package com.parser.xml;

import java.io.InputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.XMLEvent;

import org.codehaus.stax2.XMLInputFactory2;
import org.codehaus.stax2.XMLStreamReader2;

public class TestBasicStaxParsing {

private void execute(String xmlFileName) throws Exception {

    InputStream xmlInputStream = getClass().getResourceAsStream(xmlFileName);
    XMLInputFactory2 xmlInputFactory = (XMLInputFactory2)XMLInputFactory.newInstance();
    XMLStreamReader2 xmlStreamReader = (XMLStreamReader2) xmlInputFactory.createXMLStreamReader(xmlInputStream);
    while(xmlStreamReader.hasNext()){
        int eventType = xmlStreamReader.next();
        switch (eventType) {
        case XMLEvent.START_ELEMENT:
            System.out.print("<"+xmlStreamReader.getName().toString()+">");
            break;
        case XMLEvent.CHARACTERS:
            System.out.print(xmlStreamReader.getText());
            break;
        case XMLEvent.END_ELEMENT:
            System.out.println("</"+xmlStreamReader.getName().toString()+">");
            break;
        default:
            //do nothing
            break;
        }
    }

}

public static void main(String[] args) throws Exception {
    (new TestBasicStaxParsing()).execute("employee.xml");
}

}

据我了解,以下代码行似乎有多种选择,具体取决于:

  1. 您的函数是否是静态的。
  2. 输入文件的扩展名

编辑

 getClass().getResourceAsStream(xmlFileName)

但我不确定它应该如何被操纵以及为什么

有什么建议吗? 提前致谢

【问题讨论】:

    标签: java file-io xml-parsing stax getresource


    【解决方案1】:

    正如它在 JavaDoc 中所说,空值发生在两种情况下: - null xmlFileName(因此请检查您是否实际传递了正确的参数) - 找不到资源。

    在第二种情况下,您似乎正在尝试在源下的某个目录中获取 TestBasicStaxParsing.java 代码“下一个”的文件。

    确保 xmlFileName 是文件的完整名称,带有扩展名且没有任何其他路径部分,例如简单的 MyFile.xml 而不是一些 ../project/src/com/parser/xml/MyFile.xml ;

    检查文件是否实际复制到构建文件夹但您的 bild 脚本(因此它也应该在您的 TestBasicStaxParsing.class 文件旁边)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      相关资源
      最近更新 更多