【问题标题】:how read xml file from res folder如何从 res 文件夹中读取 xml 文件
【发布时间】:2011-12-19 20:56:21
【问题描述】:

我想从 XML 文件加载数据并将该数据分配给我的 Android 应用程序中的变量。

在对 Android 可用的各种 XML 解析器进行了一些研究之后,我认为最好使用的解析器方法是 SAX。

我已经阅读了一堆关于从 Android 读取 XML 的帖子,但是我在“res”文件夹中找不到使用本地文件的帖子。

我找到的所有教程都是通过 URL 加载 XML 文件。

有没有办法从 res 文件夹中加载 XML?

谢谢

【问题讨论】:

  • 我只是在众多教程之一中读到这一点:顺便说一句,如果您想解析非编译资源,例如来自网络的资源,您可能应该使用 SAX(为了速度) 或 DOM (为了通用性) 而不是。 Android 拉式解析器专门用于在编译后的 XML 上运行良好。

标签: android


【解决方案1】:

将 xml 放入 /res/raw 文件夹。看起来 openRawResource 仅从该文件夹打开资源。您也可以尝试 getResources().getXml(com.MYCLass.R.xml.programs);这将返回您的 XML 解析器实例。

【讨论】:

  • 我会/可以仍然使用 SAX 解析器还是需要为此使用另一种类型的 XML 解析器?谢谢
  • 我建议使用jsoup.org 非常容易实现,我在很多项目中都使用它。
【解决方案2】:

您可以查看我过去关于同一问题的问题:How to use DOM to read XML within Android applications correctly?

根据我的经验,我已将 xml 文件复制到 res/raw 文件夹中,并且能够使用 res.openRawResource(R.raw.the_id) 正确读取它。您可以从 res/layout 文件夹中加载它,但解析时的某些信息可能是二进制的,这并不理想。

【讨论】:

    【解决方案3】:

    使用:

     InputStream is=getResources().openRawResource(R.raw.my_xml);
    

    获取 XML 的输入流,然后使用 XMLPullParser 解析文件:

     XmlPullParser xpp=XmlPullParserFactory.newInstance().newPullParser();
     xpp.setInput(is,"your-encoding");
    

    【讨论】:

      【解决方案4】:

      您不能在原始文件夹中使用 xml 文件。因为发生了这个错误:“预期的原始类型资源。” 但是您可以轻松地将这个 xml 文件放在 assets 文件夹中并与它一起使用:

       is = getAssets().open("myFedd.xml") ;
      

      【讨论】:

        猜你喜欢
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多