2011-12-19 183 views
2

我想从XML文件加载数据并将该数据分配给我的Android应用程序中的变量。如何从res文件夹中读取xml文件

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

我读过一堆关于从Android读取XML的帖子,但是我找不到一个在'res'文件夹中使用本地文件的文章。

我发现的所有教程都通过URL加载XML文件。

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

谢谢

+0

我只是在很多教程的一个阅读:顺便说一句,如果你想解析非编资源,如网络中的那些,您应该使用SAX(用于速度)或DOM(用于多功能性)。 Android pull语法分析器专门用于编译XML。 – SkyeBoniwell 2011-12-19 21:13:59

回答

1

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

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

2

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

+0

会/我仍然可以使用SAX解析器,还是需要为此使用另一种类型的XML解析器?谢谢 – SkyeBoniwell 2011-12-19 21:09:35

+0

我会建议使用http://jsoup.org/很容易实现我用它为许多项目。 – 2011-12-19 21:10:46

1

用途:

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

得到一个输入流的XML,然后使用XMLPullParser来解析文件:

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

你不能在原始文件夹中使用xml文件。因为发生此错误:“预期的原始类型资源”。 但你可以很容易地把这个XML文件中的资产的文件夹,并使用它:

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