【发布时间】:2010-03-07 15:14:15
【问题描述】:
虽然我意识到资源本身是在 XML 文件中定义的,但如果我有自己想要使用的类型的 XML 文件,我应该将它们存储在“res/xml”中吗?
有没有更好的方法来做到这一点,例如使用资产,然后将它们加载为二进制文件以供另一个 XML 库解析?
【问题讨论】:
标签: xml android resources assets
虽然我意识到资源本身是在 XML 文件中定义的,但如果我有自己想要使用的类型的 XML 文件,我应该将它们存储在“res/xml”中吗?
有没有更好的方法来做到这一点,例如使用资产,然后将它们加载为二进制文件以供另一个 XML 库解析?
【问题讨论】:
标签: xml android resources assets
我会在 res 文件夹中添加具有特定资源类型的 XML 资源。这是我已经适应的约定,将我的所有文件放在同一个目录中以进行组织。
如果您将 XML 文件添加到 res/xml 中,则可以在运行时随时通过 Resources.getXML() 访问它
【讨论】:
XmlResourceParser
如果您更喜欢易于编码而不是闪电般的速度,那么我会改用Simple XML library。它只是更容易编程。我写了一篇您可以查看的博文,其中解释了您的 how to include it in a project。
【讨论】:
首先了解如何在 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);
【讨论】: