2015-04-08 2 views
0

Так что я знаю, что это довольно популярная проблема, однако не для решения avaialable работал для меня.XML Parsing (StAX) | getResourceAsStream из xml-файла возвращает null

Мой код - пример кода для чтения и анализа XML-документа. Orriginal источник находится в этой ссылке: http://www.studytrails.com/java/xml/woodstox/java-xml-stax-woodstox-basic-parsing.jsp

относительный путь для моего файла Явы

src\com\parser\xml\TestBasicStaxParsing.java 

входной файл «employee.xml» находится в той же глубины, как Src & бен папку и файл .classpath ,

BTW Я использую eclipse в среде 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"); 
} 

} 

До моего понимания, кажется, что существует несколько альтернатив для следующей строки кода в зависимости от:

  1. Ли ваши функции является статическим или нет.
  2. Расширение вашего входного файла

EDIT

getClass().getResourceAsStream(xmlFileName) 

Но я не знаю, как это следует манипулировать и почему

Есть предложения? Заранее спасибо

ответ

0

Как говорится в JavaDoc нулевое значение происходит в двух случаях: - нулевой xmlFileName (так убедитесь, что вы на самом деле проходит правильный аргумент) - ресурс не может быть найден.

Во втором случае кажется, что вы пытаетесь получить файл, который находится «рядом» с вашим кодом TestBasicStaxParsing.java, в каком-то каталоге под soruce.

Убедитесь, что имя xmlFileName - это полное имя файла с расширением и без каких-либо других частей пути, например, простой MyFile.xml, а не некоторый ../project/src/com/parser/xml/MyFile. XML;

Убедитесь, что файл фактически скопирован в папку сборки, но ваш сценарий bild (так что он также должен быть рядом с вашим файлом TestBasicStaxParsing.class)