虽然我意识到资源本身是在 XML 文件中定义的,但如果我有自己想要使用的类型的 XML 文件,我应该将它们存储在“res/xml”中吗?
有没有更好的方法来做到这一点,例如使用资产,然后将它们作为二进制加载以由另一个 XML 库解析?
我会在res
具有特定资源类型的文件夹中添加 XML 资源。这是我已经适应的约定,将我的所有文件都放在同一个目录中以进行组织。
如果您在其中添加 XML 文件,res/xml
则可以在运行时随时通过Resources.getXML()
如果您更喜欢易于编码而不是闪电般的速度,那么我会改用Simple XML 库。它只是更容易编程。我写了一篇博文,你可以查看它,解释如何将它包含在你的项目中。
首先了解如何在 Android 中正确访问文件:
您可能需要访问您的原始文件和目录。如果这样做,那么将文件保存在res/
其中对您不起作用,因为only way to read a resource from res/ is with the resource ID
. 相反,您可以将资源保存在 assets/ 目录中。
保存在 assets/ 目录中的文件没有资源 ID,因此您无法通过 R 类或 XML 资源引用它们。相反,您可以像普通文件系统一样查询 assets/ 目录中的文件,并使用 AssetManager 读取原始数据。
但是,如果您只需要读取原始数据(例如视频或音频文件)的能力,则将文件保存在 res/raw/ 目录中并使用 openRawResource() 读取字节流。
访问 XML 文件
http://developer.android.com/guide/topics/resources/accessing-resources.html#ResourcesFromXml
res/xml/
Arbitrary XML files that can be read at runtime by calling Resources.getXML()
Resources res = activity.getResources();
XmlResourceParser xrp = res.getXml(R.xml.the_file_name_aka_resource_ID);