Android应用开发之XML文件解析之一
2013-05-27 22:01
513 查看
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229
本节我们学习XML解析,在Android程序中,Xml解析与Java中几乎相同,最常用的有SAX,DOM,Pull三种解析方式。Android中内置的是Pull解析方式,因此Pull解析也就成为Android推荐的解析方式。接下来我们分别针对这三种XML解析方式进行讲解。
解析思路:
本节我们学习XML解析,在Android程序中,Xml解析与Java中几乎相同,最常用的有SAX,DOM,Pull三种解析方式。Android中内置的是Pull解析方式,因此Pull解析也就成为Android推荐的解析方式。接下来我们分别针对这三种XML解析方式进行讲解。
1SAX(Simple API for XML)
SAX是基于事件驱动的模型。通俗的讲就是XML文件在加载的过程中,加载到不同节点会相应地触发不同方法来处理。它属于一次加载,可以处理任意大小的XML文件,它对内存的要求非常低,非常适合手机等移动终端设备。SAX采用的是读取文件的方式,把XML文件当作文本文件读,就只是读取,并不保存任何信息。SAX在解析XML过程中无法中断,只能读取XML文件而不能修改。1.1常用回调方法(DefaultHandler类)
void startDocument() // 开始文档时触发 void endDocument() // 结束文档时触发 void startElement(String uri, String localName, String qName, Attributes atts) // 解析节点时触发 void endElement(String uri, String localName, String qName) // 结束节点时触发 void characters(char[ ] ch, int start, int length) // 处理文本节点
1.2创建SAX解析器
XMLReader reader = XMLReaderFactory.createXMLReader(); // 使用系统默认值来创建一个XMLReader XMLReader reader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); // 从给定的类名称来创建一个XMLReader SAXParserFactory spFactory = SAXParserFactory.newInstance(); // 使用javax.xml.parsers包中的SAXParserFactory类和SAXParser类创建 SAXParser sParser = spFactory.newSAXParser();
2Pull
Pull也是基于事件驱动的模型。Android中内置了Pull解析包。从字面上就可以看出来,Pull,拉取的意思。需要什么资源就“拉取”什么资源。如果需要的只是XML文件中的一部分,就“拉取”一部分。从而节省资源,提高效率。当然在J2EE中也可以使用Pull解析。2.1常用回调事件
XmlPullParser.START_DOCUMENT // 开始文档事件 XmlPullParser.END_DOCUMENT // 结束文档事件 XmlPullParser.START_TAG // 开始节点事件 XmlPullParser.END_TAG // 结束节点事件
2.2获得Pull解析器
XmlPullParser parser = Xml.newPullParser();
3DOM(Document Object Model)
文档对象模型,它是基于对象的,又或者是基于树的。它属于两次加载,首先将整个文档载入内存,然后将文档解析形成一棵树。如果文档过大,对内存占用是很大的。但它可以在解析的过程中修改文件树,可以存储文件树的任意部分。解析思路:
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); // 创建一个DocumentBuilderFactory实例 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); // 创建DocumentBuilder Document document = documentBuilder.parse(in); // 加载XML文档(Document) Element root = document.getDocumentElement(); // 获取文档的根结点(Element) NodeList nodes = root.getElementsByTagName(ELEMENT_ANDROID); // 获取根结点中所有子节点的列表(NodeList) for (int i = 0; i < nodes.getLength(); i++) {...} // 使用迭代获取子节点列表中的需要读取的结点
相关文章推荐
- Android应用开发之XML文件解析之一
- Android应用开发之XML文件解析之二
- Android应用开发之XML文件解析之二
- Android开发之XML文件的解析
- [置顶] Android开发之XML文件的解析
- Android开发--详解SAX解析XML文件
- android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
- android开发第四天xml文件解析
- Android开发之XML文件的解析的三种方法
- Android开发--详解SAX解析XML文件
- XML 文件解析 -- MarsChen Android 开发教程学习笔记
- Android开发之XML文件解析的使用
- Android开发之XML文件的解析的PULL方式解析
- Android开发进阶(五)----------SAX模式解析XML文件
- Android开发之XML文件的解析的三种方法
- Android开发之XML文件的解析的三种方法
- Android开发之XML文件的解析的三种方法
- Android开发之XML文件的解析的三种方法
- 【Android应用开发】-(17)获取Google天气预报通过Xml和JSON解析数据
- Android开发之XML文件的解析的三种方法