2014-09-01 209 views
0

我有一個xml文件(thexml.xml),它與res/raw文件夾中的dtd(thedtd.dtd)文件相關。 這是XMLFILE的DOCTYPE:<!DOCTYPE myApp SYSTEM "thedtd.dtd"> 由於地址DTD文件已被設置相對我得到這個錯誤:什麼是應用程序中res/raw文件夾的絕對路徑?

org.xml.sax.SAXParseException: Relative URI "thedtd.dtd"; 
can not be resolved without a base URI. 

所以我想給的DOCTYPE的DTD文件的絕對路徑,但我不知道地址是什麼。我想這

android.resource://com.ssh.mine/raw/thedtd 

注:(com.ssh.mine是我的項目的包名)

,但它沒有工作,我得到了java.net.MalformedURLException。 所以我應該到RES /原始文件夾的絕對路徑是...

+1

有沒有像資源的絕對路徑這樣的事情,但您可以看到ContentResolver.openAssetFileDescriptor/openInputStream方法以及它們如何與ContentResolver一起使用。 SCHEME_ANDROID_RESOURCE方案 – pskink 2014-09-01 17:28:50

回答

1

what is the absolute path to the res/raw folder in your app?

沒有路徑。原始資源是ZIP檔案中的條目,即您的APK。

I have an xml file(thexml.xml) and it's related dtd(thedtd.dtd) file in res/raw folder. this is the DOCTYPE of the xmlfile: Because the address to the dtd file has been set relatively i get this error:

您可能需要使用assets/而不是res/raw/更好的運氣,儘管這取決於您使用的是使用XML的東西,我懷疑,也不會工作。在最壞的情況下,您需要將文件複製到內部存儲器(例如,getFilesDir())然後使用它們。

或者,將XML放在res/xml/中,擺脫DTD,在這種情況下,您可以從Resources對象的XML中獲得XmlPullParser

0

資源是APK文件的一部分。沒有辦法使用URI來引用APK的一部分。

而應該攔截解析器的調用來定位DTD。假設您正在使用內置的Android解析器,請查看文檔EntityResolver

相關問題