【问题标题】:What's the best way to store and access XML in Android?在 Android 中存储和访问 XML 的最佳方式是什么?
【发布时间】:2010-03-07 15:14:15
【问题描述】:

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

有没有更好的方法来做到这一点,例如使用资产,然后将它们加载为二进制文件以供另一个 XML 库解析?

【问题讨论】:

    标签: xml android resources assets


    【解决方案1】:

    我会在 res 文件夹中添加具有特定资源类型的 XML 资源。这是我已经适应的约定,将我的所有文件放在同一个目录中以进行组织。

    如果您将 XML 文件添加到 res/xml 中,则可以在运行时随时通过 Resources.getXML() 访问它

    【讨论】:

    • 你知道我在通过 Resource 加载 XML 时最终会使用哪个 API 吗?
    • 我有点困惑你所说的 API 是什么意思,你能再澄清一下吗?
    • 使用什么类型的解析器?有 Android API 参考吗?更简单地说,Resources.getXML() 返回什么类型的对象?
    • 它从 Android API 返回一个XmlResourceParser
    • 同样使用 Resources.getXml() 返回的 XmlPullParser 解析 XML 文件比解析原始文件快 10 到 100 倍,因为内置工具将 XML 文件预处理为二进制表示。
    【解决方案2】:

    如果您更喜欢易于编码而不是闪电般的速度,那么我会改用Simple XML library。它只是更容易编程。我写了一篇您可以查看的博文,其中解释了您的 how to include it in a project

    【讨论】:

      【解决方案3】:

      首先了解如何在 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()
      

      Source

      Resources res = activity.getResources();
      XmlResourceParser xrp = res.getXml(R.xml.the_file_name_aka_resource_ID);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-09
        • 2011-01-02
        • 2013-06-14
        • 2010-10-22
        • 2018-08-21
        • 1970-01-01
        • 2014-10-21
        • 2012-11-17
        相关资源
        最近更新 更多