我正在使用SAX
在xml文件中解析,需要将其添加为资源而不是硬编码文件路径。
我使用如下字符串设置文件路径y:
private static final String GAME_FILE = "game.xml";
建议使用getResourceAsStream
,但我不确定如何将其应用于我的解决方案。
有没有人如何在项目中引用来自资源的文件?
这是我通过将xml文件添加到项目的根目录来引用xml文件的方法,这是不好的做法:
public class Parser extends DefaultHandler{
private static final String GAME_FILE = "game.xml";
//You should have a boolean switch for each XML element, but not attribute
boolean location = false;
boolean description = false;
boolean item = false;
boolean gameCharacter = false;
boolean searchAlgorithm = false;
//Read in the XML file game.xml and use the current object as the SAX event handler
public void parse() throws ParserConfigurationException, SAXException, IOException{
XMLReader xmlReader = null;
SAXParserFactory spfactory = SAXParserFactory.newInstance();
spfactory.setValidating(false);
SAXParser saxParser = spfactory.newSAXParser();
xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(this);
InputSource source = new InputSource(GAME_FILE);
xmlReader.parse(source);
xmlReader.setErrorHandler(this);
}
下面显示了将文件添加到资源文件夹后将其添加到资源文件夹后的项目结构,导致找不到该文件。
答案 0 :(得分:1)
问题是game.xml在技术上属于“资源”包。因此使用
GAME_FILE = "/resources/game.xml"
InputSource source = new InputSource(getClass().getResourceAsStream(GAME_FILE));
应该做的伎俩