`
piperzero
  • 浏览: 3554064 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

android中访问和解析xml文件

 
阅读更多
android工程目录下:

/res/xml ,这个目录中大家可能偶尔用到过,这里可以用来存储xml格式的文件,并且和其他资源文件一样,这里的资源是会被编译成二进制格式放到最终的安装包里的,我们也可以通过R类来访问这里的文件,并且解析里面的内容,例如我们在这里存放了一个名为data.xml的文件:

1. <?xml version="1.0" encoding="utf-8"?>

2. <root>

3. <title>Hello XML!</title>

4. </root>

随后,我们就可以通过资源ID来访问并解析这个文件了:

1.

2. XmlResourceParser xml = getResources().getXml(R.xml.data);

3. xml.next();

4. int eventType = xml.getEventType();

5. boolean inTitle = false;

6. while(eventType != XmlPullParser.END_DOCUMENT) {

7.

8. //到达title节点时标记一下

9. if(eventType == XmlPullParser.START_TAG) {

10. if(xml.getName().equals("title")) {

11. inTitle = true;

12. }

13. }

14.

15. //如过到达标记的节点则取出内容

16. if(eventType == XmlPullParser.TEXT && inTitle) {

17. ((TextView)findViewById(R.id.txXml)).setText(

18. xml.getText()

19. );

20. }

21.

22. xml.next();

23. eventType = xml.getEventType();

24. }

复制代码

在这里,我们用资源类的getXml方法,返回了一个xml解析器,这个解析器的工作原理和SAX方式差不多。

要注意的是,这里的xml文件,最终是会被编译成二进制形式的,如果大家想让文件原样存储的话,那么就要用到下一个目录啦,那就是/res/raw目录

这个目录的唯一区别就是,这里的文件会原封不动的存储到设备上,不会被编译为二进制形式,访问的方式也是通过R类,下面是一个例子:

1.

2. ((TextView)findViewById(R.id.txRaw)).setText(

3. readStream(getResources().openRawResource(R.raw.rawtext))

4. );

5.

6. private String readStream(InputStream is) {

7.

8. try {

9. ByteArrayOutputStream bo = new ByteArrayOutputStream();

10. int i = is.read();

11. while(i != -1) {

12. bo.write(i);

13. i = is.read();

14. }

15.

16. return bo.toString();

17. } catch (IOException e) {

18. return "";

19. }

20. }

这次使用资源类中的方法,openRawResource,返回给我们一个输入流,这样我们就可以任意读取文件中的内容了,例如上面例子中那样,原样输出文本文件中的内容。

当然,如果你需要更高的自由度,尽量不受android平台的约束,那么/assets这个目录就是你的首选了~
这个目录中的文件除了不会被编译成二进制形式之外,另外一点就是,访问方式是通过文件名,而不是资源ID。并且还有更重要的一点就是,大家可以在这里任意的建立子目录,而/res目录中的资源文件是不能自行建立子目录的。如果需要这种灵活的资源存储方式,那么就看看下面这个例子:

1.

2. AssetManager assets = getAssets();

3.

4. ((TextView)findViewById(R.id.txAssets)).setText(

5. readStream(assets.open("data.txt"))

6. );

在context上下文中,调用getAssets返回一个AssetManager,然后使用open方法就可以访问需要的资源了,这里open方法是以assets目录为根的。所以上面这段代码访问的是assets目录中名为data.txt的资源文件~

分享到:
评论

相关推荐

    android 解析XML文件 生成XML文件

    本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...

    Android 解析xml文件

    本篇将深入探讨Android中解析XML文件的方法,以及如何通过示例代码`ReadXmlConfigFile`来实现这一过程。 ### XML解析器类型 Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document ...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    [Android]使用SAX解析XML文件

    本篇将重点讲解如何使用SAX(Simple API for XML)解析XML文件,这是一种事件驱动的解析方式,非常适合处理大体积的XML文件,因为它不会一次性加载整个文件到内存中,从而节省了资源。 首先,了解SAX解析的基本原理...

    老罗Android视频开发教程 android解析xml文件代码

    通过老罗的Android视频教程,开发者可以学习到如何有效地解析XML文件,提升在Android开发中的数据处理能力。不论是DOM、SAX还是Pull解析,每种方法都有其适用场景,理解并熟练掌握这些技术,将对Android应用开发...

    Android Dom解析XML

    在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`来创建解析器,并通过`DocumentBuilder`实例解析XML文件。下面是一个简单的示例: ```java DocumentBuilderFactory factory = ...

    android中xml文件的解析.doc

    理解如何解析XML文件是至关重要的,本节将深入探讨Android中的三种XML解析方法:SAX、DOM和Pull解析。 **SAX解析** SAX(Simple API for XML)是一种基于事件驱动的解析方式,它不加载整个XML文档到内存,而是逐行...

    android上使用DOM解析XML

    要解析XML文件,需要调用`DocumentBuilder`的`parse()`方法,并传入XML文件的输入流。在Android中,可以通过`FileInputStream`或`AssetManager`从文件系统或资源中读取XML文件。 5. **解析XML** `parse()`方法...

    解析xml文件 android

    本篇将详细介绍如何在Eclipse中解析XML文件,以及相关的Android XML解析技术。 首先,Android SDK提供了两种主要的XML解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析器将整个XML文件...

    android 三种方式解析XML(DOM,Pull,Sax) 带文件编码识别

    本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...

    Android中XML数据解析

    本文将深入探讨在Android中如何解析XML数据,包括DOM、SAX和Pull解析器三种方法。 首先,DOM(Document Object Model)解析器将整个XML文档加载到内存中,形成一个树形结构,然后可以遍历这个结构来访问和修改XML...

    android的xml文件的解析

    总结,XML解析是Android开发中的基础技能,了解并掌握DOM和SAX解析方式可以帮助开发者更有效地处理XML文件。选择合适的解析方式取决于具体的应用场景和性能需求。在实际项目中,还有一种基于SAX的拉式解析库——PULL...

    SDcard数据访问SAX解析XML文件

    总的来说,SAX解析XML文件结合SD卡数据访问是Android开发中的常见操作,能够实现高效的文件解析和存储,尤其适用于资源有限的移动设备环境。通过以上步骤和注意事项,开发者可以灵活地处理XML数据并在SD卡上进行存取...

    android xml多种解析生成

    Android 平台中,XML 文件解析和生成是非常重要的一部分。XML 文件可以存储和交换结构化数据,广泛应用于 Android 应用程序中。本文将介绍 Android 中使用多种解析和生成 XML 文件的方法。 XML 解析 XML 解析是指...

    六,Android Xml解析

    3. **Preferences**:XML文件用于存储用户偏好设置,Android提供了`SharedPreferences`接口,可以通过XML解析访问和修改这些设置。 4. **资源文件**:例如字符串资源、颜色资源、尺寸资源等,都在values目录下的XML...

    Android SAX、DOM、Pull解析xml文件案例讲解

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,特别是在移动应用开发,如Android中,解析XML文件是常见的任务。本篇将详细讲解Android中三种主要的XML解析方式:SAX(Simple API for XML)...

    android 三种xml解析方式整合

    例如,在Android应用程序的资源配置中,小规模的XML文件(如布局文件、字符串资源)通常使用DOM解析,因为它们加载快,且方便操作。而对于网络传输的大量XML数据,如RSS feed或者XML格式的日志文件,SAX或PULL解析器...

    android xml文件解析 SAX

    解析XML文件是Android开发者必须掌握的一项技能。本篇将详细介绍Android中的SAX(Simple API for XML)解析方式。 SAX是一种事件驱动的XML解析器,它不会像DOM解析器那样将整个XML文档加载到内存中,而是逐行读取,...

    android访问网络返回的XML数据并且进行解析

    以上就是Android访问网络并解析XML数据的基本步骤。实际开发中,你可能需要根据具体需求进行调整,比如使用更高效的网络库,或者处理更复杂的XML结构。通过不断实践和学习,你将能更好地掌握这一技能。

    android XML三种解析及生成

    3. 调用`parse`方法解析XML文件,并传入自定义的处理器对象。 ### 2. Pull Parser解析 Pull Parser与SAX类似,也是事件驱动的,但它提供了更简单的API,开发者可以主动调用`next()`方法获取下一个事件,无需实现...

Global site tag (gtag.js) - Google Analytics