Android读写XML(上)——package说明
修改浏览权限 | 删除
XML 经常用作 Internet 上的一种数据格式,其文件格式想必大家都比较清楚,在这里我结合Android平台,来说明Android SDK提供的读写XML的package。
首先介绍下Android SDK与Java SDK在读写XML文件方面,数据包之间的关系。Android 平台最大的一个优势在于它利用了 Java 编程语言。Android SDK 并未向标准 Java Runtime Environment (JRE) 提供一切可用功能,但它支持其中很大一部分功能。Java 平台支持通过许多不同的方式来使用 XML,并且大多数与 XML 相关的 Java API 在 Android 上得到了完全支持。举例来说,Java 的 Simple API for XML (SAX) 和 Document Object Model (DOM) 在 Android 上都是可用的,这些 API 多年以来一直都是 Java 技术的一部分,较新的 Streaming API for XML (StAX) 在 Android 中并不可用。但是, Android 提供了一个功能相当的库。最后,Java XML Binding API 在 Android 中也不可用,这个 API 已确定可以在 Android 中实现。Android SDK提供了如下package来支持XML的读写:
包 功能介绍
javax.xml 根据 XML 规范定义核心 XML 常量和功能。
javax.xml.parsers 提供DOM和SAX方法解析XML文档
org.w3c.dom W3C提供的使用DOM方法读取XML
org.xml.sax 提供核心SAX APIs
org.xmlpull.v1
额外补充说明下,在android.util数据包中也提供了一个类Xml,不过这个类就是把以上package简单封装了下。
读取XML主要有2种方法:DOM与SAX(Simple API for XML),在这里对这2种方法分别加以说明。
DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,然后代码就可以使用DOM接口来操组整个树结构,其他点如下:
* 优点:整个文档树都在内存当中,便于操作;支持删除、修改、重新排列等多功能。
* 缺点:将整个文档调入内存(经常包含大量无用的节点),浪费时间和空间。
* 使用场合:一旦解析了文档还需要多次访问这些数据,而且资源比较充足(如内存、CPU等)。
为了解决DOM解析XML引起的这些问题,出现了SAX。SAX解析XML文档为事件驱动,详细说明请阅读Android读写XML(中)–SAX。当解析器发现元素开始、元素结束,文本、文档的开始或者结束时,发送事件,在程序中编写响应这些事件的代码,其特点如下:
* 优点:不用事先调入整个文档,占用资源少。尤其在嵌入式环境中,极力推荐采用SAX进行解析XML文档。
* 缺点:不像DOM一样将文档长期驻留在内存,数据不是持久的,事件过后,如没有保存数据,那么数据就会丢失。
* 使用场合:机器性能有限,尤其是在嵌入式环境,如Android,极力推荐采用SAX进行解析XML文档。
大多数时间,使用 SAX 是比较安全的,并且 Android 提供了一种传统的 SAX 使用方法,以及一个便捷的 SAX 包装器。如果XML文档比较小,那么 DOM 可能是一种比较简单的方法。如果XML文档比较大,但只需要文档的一部分,则 XML Pull 解析器可能是更为有效的方法。最后对于编写 XML,Pull 解析器包也提供了一种便捷的方法,详细说明请阅读Android读写XML(下)——数据写入XML文档。因此,无论我们的 XML 需求如何,Android 都能在一定程度上满足我们的需求。
下面我们详细介绍采用DOM的方法,读取XML文档的思路,这基本上与XML的结构是完全一样的。首先加载XML文档(Document),然后获 取文档的根结点(Element),然后获取根结点中所有子节点的列表(NodeList),然后使用再获取子节点列表中的需要读取的结点。根据以上思 路,简要写个读取XML文件的例子如下:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.content.Context;
void ReadXML()
{
DocumentBuilderFactory docBuilderFactory = null;
DocumentBuilder docBuilder = null;
Document doc = null;
try {
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilder = docBuilderFactory.newDocumentBuilder();
//xml file 放到 assets目录中的
doc = docBuilder.parse(context.getResources().getAssets().open(”weather.xml”));
//root element
Element root = doc.getDocumentElement();
//Do something here
//get a NodeList by tagname
NodeList nodeList = root.getElementsByTagName(”tag”);
for(int i =0;i< nodeList.getLength();i++)
{
Node nd = nodeList.item(i);
//Read Node
}
} catch (IOException e) {
} catch (SAXException e) {
} catch (ParserConfigurationException e) {
} finally {
doc = null;
docBuilder = null;
docBuilderFactory = null;
}
}
以上代码比较简单,就不在此详细解析了。
采用DOM读取XML文件,需要加载整个XML文件,在XML文件比较大的情况下,会导致Android设备内存紧张,为了避免这个问题,也可以采 用SAX的方法读取XML文件,不过SAX对结点的排序、增加结点等方面的操作相比DOM就有些复杂了。根据XML文件大小、数据处理的需求,选择合适的 读取的方法。
对于XML的写入,一方面可以采用前面介绍的这些package;另外一方面也可以按照XML的标准,将数据以字符串的形式直接写入文件,这也是种很不错的方法。在这里推荐IBM开源社区中一篇比较好的文章 Android 上使用 XML,有兴趣的可以去深入学习下。
总结说明
XML作为一种简单的文件格式,作为网络上数据交换的基础,而且得到了大部分数据库的支持(直接将XML文件插入数据库),XML文件的读写只是基础,相信在以后的网络、数据库的开发中会经常使用。
分享到:
相关推荐
android中读写xml文件简单demo,可以通过此代码来简单的读取xml配置文件
在Android平台上,XML作为一种常见的数据交换格式,被广泛用于存储和传输数据。Android SDK提供了丰富的API来支持XML的读写,这些API主要来自于Java SDK,同时也有一些特定于Android的实现。下面我们将详细讨论...
Android读写XML,SAX等方式
在Android平台上,XML作为一种常见的数据交换格式,被广泛用于存储和传输数据。Android SDK提供了多种方式来处理XML,包括解析和生成XML文档。虽然Android并未包含Java标准库中的所有XML功能,但大部分关键API得以...
下面我们将深入探讨Android中读写XML的相关知识点。 一、XML解析器 Android中主要有两种类型的XML解析器:DOM解析器和SAX解析器。 1. DOM解析器(Document Object Model): DOM解析器将整个XML文档加载到内存中,...
### Android读写XML知识点详解 #### 一、概述 在Android开发中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。它不仅被用于配置文件(如`AndroidManifest.xml`),还常用于...
在Android平台上,对文件进行读写操作是应用程序中常见的需求,比如存储用户数据、缓存信息或者媒体资源。本文将详细讲解如何在Android系统中进行SD卡和内部存储的读写,以及如何获取文件目录。 ### 1. Android权限...
首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和存储。在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX...
在Android开发中,读写配置文件是常见的任务,主要用于存储应用程序的设置、用户偏好或者其他持久化数据。配置文件通常以XML或JSON格式存在,因为它们结构清晰,易于解析。本实例将详细介绍如何在Android中进行读取...
总结来说,Android文件读写权限管理是一个复杂的过程,开发者需要在`AndroidManifest.xml`中声明权限,并在Android 6.0及以上版本中处理运行时权限请求。随着Android版本的更新,如Android Q,文件访问方式也会相应...
在Android平台上,与U盘进行文件的读写操作并不像在桌面系统中那样直接,因为Android设备通常不直接支持USB主机模式(Host Mode)。然而,借助第三方库如libaums,我们可以实现这一功能。libaums是Android上一个用于...
在Android平台上,开发基于Qt的应用程序时,由于Android 6.0(API级别23)引入了运行时权限管理,因此对于涉及敏感操作如读写文件和录制音频的功能,需要在运行时请求用户授权。本Demo是针对这些权限管理的一个实例...
`SharedPreferences`类提供了方便的接口,用于读写这些XML文件中的键值对。 总结,XML在Android开发中扮演着至关重要的角色,无论是在界面设计、数据存储还是偏好设置等方面都有广泛的应用。理解并熟练掌握XML的...
在Android平台上,有时候我们需要处理Excel数据,例如读取其中的内容并转换为XML文件,以便更好地在应用程序中使用或与其他系统交换数据。这个项目提供了一种方法来实现这一目标,利用了jxl.jar库来处理Excel文件,...
3. 错误处理:在读写XML过程中,应捕获并处理可能抛出的异常,如`IOException`、`XmlPullParserException`等。 4. 安全性:如果存储敏感信息,如用户密码,应该对XML数据进行加密。 5. 性能优化:避免频繁读写大...
综上所述,Android开发者需要掌握XML文件的读写,以便处理数据和配置;理解TXT文件操作,以便进行简单的文本存储;学习MD5加密,确保数据的安全性;最后,利用地图API,如百度地图,能为用户提供丰富的地理位置服务...
在Android开发中,由于内存限制和性能优化的需求,通常会选择SAX(Simple API for XML)解析器来读取XML文件,而非DOM(Document Object Model)解析器,因为SAX是基于事件驱动的,它按需逐个处理XML元素,占用内存...
1. **权限声明**:由于涉及系统级别的操作,服务需要在AndroidManifest.xml中声明适当的权限,如`android.permission.WRITE_SECURE_SETTINGS`或`android.permission.ACCESS_NVRAM`(如果自定义了该权限)。...
在标题"android串口读写"中,我们关注的是如何在Android平台上实现串口的数据发送与接收。描述中提到的"demo"是一个示例程序,它展示了如何操作设备上的/dev/ttyMT1这一特定串口,并且指出在系统的`init.rc`配置文件...