SAX - 无法在libGDX中获取文件路径以进行解析

时间:2013-03-06 18:20:49

标签: java xml-parsing sax libgdx

我正在尝试解析我正在用libGDX制作的游戏中的xml文件。我在下面的情况下得到FileNotFoundException。

在扩展DefaultHandler的类中,我有这个方法来解析xml / data.xml下的xml。如果我把这个xml文件夹放在src /目录之外,它可以在Eclipse中运行,但是当我导出它时不会,因为文件夹“xml”没有包含在jar中。

现在当我把它放在src文件夹下并将路径指定为“src / xml / data.xml”时,它只能在Eclipse中运行。

我怎么能找到路径?

public void loadXML() throws SAXException, IOException, ParserConfigurationException {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser parser = factory.newSAXParser();

    parser.parse(Gdx.files.internal("xml/data.xml").path(), this);
}

1 个答案:

答案 0 :(得分:0)

我认为Eclipse将文件打包到.jar文件中,当它位于src/目录中时(请参阅Eclipse: export to .jar AND include resource files (ANT)),因此您首先需要从Gdx.files.internal切换到{{ 1}}通过类路径查看jar中的文件。

请注意,如果您希望将Gdx.files.classpath目录保留在顶层,则应该能够将xml/目录标记为“源文件夹”。

第二个问题是.jar中存储的文件没有“路径”。那就是没有String喜欢“/ this / is / a / path / to / a / file”可以表示.jar中的文件(因此对文件的.path()的调用赢了'返回任何有用的东西)。不过,您可以要求InputStreamReader这样的文件。我想Gdx.files.classpath("xml/data.xml").reader()(或.read(1024)) 应该有效(假设SAXParser parse方法需要Reader(或InputStream)。如果SAXParser需要字符串路径,则可能需要不同的方法。