簡體   English   中英

SAX-無法正確獲取libGDX中要解析的文件路徑

[英]SAX - Can't get the file path right in libGDX to parse

我正在嘗試在使用libGDX制作的游戲中解析xml文件。 在以下情況下,我得到FileNotFoundException。

在擴展DefaultHandler的類中,我具有此方法來解析xml / data.xml下的xml。 如果我將此xml文件夾放在src /目錄之外,則它在Eclipse中有效,但在導出時不起作用,因為jar中未包含文件夾“ xml”。

現在,當我將其放在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);
}

我認為Eclipse在src/目錄中將文件打包到.jar文件中(請參閱Eclipse:導出到.jar並包含資源文件(ANT) ),因此首先需要從Gdx.files.internal切換到Gdx.files.classpath通過類路徑在jar中查找文件。

請注意,如果要將xml/目錄保留在頂層,則應該可以將其標記為“源文件夾”。

第二個問題是,.jar中存儲的文件沒有“路徑”。 那就是沒有像“ / this / is / a / path / to / a / file”這樣的String可以表示.jar內的文件(因此,對File上的.path()的調用不會返回任何有用的信息) 。 你可以要求一個InputStreamReader這樣的文件在-A-JAR的,雖然。 我認為Gdx.files.classpath("xml/data.xml").reader() (或.read(1024) )應該可以工作(假設有一個采用Reader (或InputStream )的SAXParser parse方法。如果SAXParser需要字符串路徑,您可能需要其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM