若要操作xml文档,首先需要将xml解析出来。通常情况下,解析xml文件有三种方式,分别是DOM解析、SAX解析和PULL解析,接下来针对这三种方式进行简单的介绍。
1.DOM解析
DOM(Document Object Mode)解析是一种基于对象的API,它会将xml文件的所有内容以文档树方式放在内存中,然后允许使用DOM API遍历XML树,检索所需的数据,这样便能根据树的结构以节点形式来对文件进行操作。
使用DOM操作XML的代码看起来是比较直观的,而且在编码方面比SAX解析更加简单。但是,由于DOM需要将整个XML文件以文档树的形式存放在内容中,消耗内存比较大。因此,较小的XML文件可以采用这种方式解析,但较大的文件不建议采用这种方式来解析。
2.SAX解析
SAX解析会逐行扫描XML文档,当遇到标签时触发解析处理器,采用事件处理的方式解析XML。它在读取文档的同时即可对XML进行处理,不必等到文档加载结束,相对快捷。而且也不需要将整个文档加载进内存,因此不存在占用内存的问题,可以解析超大XML。但是,SAX解析只能用来读取XML中的数据,无法进行增删改。
3.PULL解析
PULL解析器是一个开源的Java项目,既可以用于Android应用,也可以用于JavaEE程序。Android已经集成了PULL解析器,因此,在Android中最常用的解析方式就是PULL解析。
使用PULL解析XML文档,首先要创建XmlPullParser解析器,该解析器提供了很多属性,通过这些属性可以解析出XML文件中的各个节点内容。
XmlPullParser的常用属性如下:
XmlPullParser.START_DOCUMENT: XML文档的开始,如<?xml version="1.0"encoding="utf-8"?>。
XmlPullParser.END_DOCUMENT: XML文档的结束。
XmlPullParser.START_TAG: 开始节点,在xml文件中,除了文本之外,带有尖括号<>的都是开始节点,如<weather>。
XmlPullParser.END_TAG: 结束节点,带有</ >都是结束节点,如</weather>。
接下来介绍下PULL解析器的用法,具体步骤如下:
(1)通过调用Xml.newPullParser();得到一个XmlPullParser对象。
(2)通过parser.getEventType()获取到当前的事件类型。
(3)通过while循环判断当前操作事件类型是否为文档结束,是则跳出while循环。
(4)while循环中通过switch语句判断当前事件类型是否为开始标签,是则获取该标签中的内容。