在Android中存储和访问XML的最佳方法是什么?

9

我知道资源本身是在XML文件中定义的,但如果我有一个自己的类型的XML文件想要使用,我应该将它们存储在“res / xml”中吗?

是否有更好的方法,例如使用资产,然后将它们作为二进制文件加载,再由另一个XML库解析?

3个回答

9
我会选择将XML资源添加到特定的资源类型中,放在res文件夹内。这是我采用的一种惯例,为了方便组织,我将所有文件放在同一个目录下。
如果你将XML文件添加到res/xml中,它可以在运行时通过Resources.getXML()随时访问。

当通过资源加载XML时,你知道会使用哪个API吗? - Alexander Trauzzi
我有点困惑你所说的是哪个API,你能再解释一下吗? - Anthony Forloney
使用了什么类型的解析器?是否有Android API参考文档?更简单地说,Resources.getXML()返回什么类型的对象? - Alexander Trauzzi
它从Android API返回一个XmlResourceParser - Anthony Forloney
4
使用Resources.getXml()返回的XmlPullParser解析XML文件比解析原始文件快10-100倍,因为构建工具会将XML文件预处理成二进制表示形式。请注意,翻译旨在保持原文意思,同时使其更易读懂,不包含解释或其他额外内容。 - hackbod
不错!很好地记录下来了,我会特别努力继续做下去。非常感谢。 - Alexander Trauzzi

2

0

首先要正确了解如何在Android中访问文件:

您可能需要访问原始文件和目录。如果是这样,那么将文件保存在res/中对您来说行不通,因为从res/读取资源的唯一方法是使用资源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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接