2014-09-01 94 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

相关问题