Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML解析(StAX)|来自XML文件的getResourceAsStream返回null_Java_File Io_Xml Parsing_Stax_Getresource - Fatal编程技术网

Java XML解析(StAX)|来自XML文件的getResourceAsStream返回null

Java XML解析(StAX)|来自XML文件的getResourceAsStream返回null,java,file-io,xml-parsing,stax,getresource,Java,File Io,Xml Parsing,Stax,Getresource,所以我知道这是一个非常流行的问题,但是没有一个可行的解决方案对我有效 我的代码是用于读取和解析xml文档的示例代码。或原始来源在此链接中: 我的java文件的相对路径是 src\com\parser\xml\TestBasicStaxParsing.java 输入文件employee.xml与src&bin文件夹和.classpath文件的深度相同 顺便说一句,如果这对您有帮助的话,我正在windows环境中使用eclipse 下面是我试图运行的java文件 package com.pars

所以我知道这是一个非常流行的问题,但是没有一个可行的解决方案对我有效

我的代码是用于读取和解析xml文档的示例代码。或原始来源在此链接中:

我的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");
}

}
但我不知道应该如何操纵它,为什么

有什么建议吗?
提前感谢

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

在第二种情况下,您似乎试图在soruce下的某个目录中获取TestBasicStaxParsing.java代码旁边的文件

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

检查该文件是否已实际复制到生成文件夹,但未复制到bild脚本,因此它也应位于TestBasicStaxParsing.class文件的旁边

 getClass().getResourceAsStream(xmlFileName)