Синтаксический анализ XML (StAX)| getResourceAsStream из файла XML возвращает ноль
Так что я знаю, что это довольно популярная проблема, однако ни одно из доступных решений не сработало для меня.
Мой код является примером кода для чтения и анализа 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, если это поможет вам.
Ниже приводится файл 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");
}
}
Насколько я понимаю, существует несколько альтернатив для следующей строки кода в зависимости от:
- Является ли ваша функция статичной или нет.
- Расширение вашего входного файла
РЕДАКТИРОВАТЬ
getClass().getResourceAsStream(xmlFileName)
Но я не уверен, как им следует манипулировать и почему
Какие-либо предложения? заранее спасибо
1 ответ
Как сказано в JavaDoc, нулевое значение происходит в двух случаях: - null xmlFileName (поэтому убедитесь, что вы действительно передаете правильный аргумент) - ресурс не может быть найден.
Во втором случае кажется, что вы пытаетесь получить файл, который находится "рядом" с вашим кодом TestBasicStaxParsing.java в каком-то каталоге под soruce.
Убедитесь, что xmlFileName - это полное имя файла с расширением и без каких-либо других частей пути, например, простой MyFile.xml, а не some ../project/src/com/parser/xml/MyFile.xml;
Убедитесь, что файл действительно скопирован в папку сборки, но в ваш скрипт сборки (поэтому он также должен быть рядом с файлом TestBasicStaxParsing.class)