- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android学习笔记036之网络数据解析
Android学习笔记036之网络数据解析
前面我们介绍了HTTP协议和Android中通过HTTP协议通信的两种方式:HttpUrlConnection和HttpClient,这些都只是在协议层的,数据在网络中传递需要有一定的格式才能被识别的解析,目前,常用的有XML和JSON,那么这一篇,我们来学习一下XML数据和JSON数据的解析:
1、XML数据解析
XML不仅仅在Android中常用,在各种应用中也广泛使用,是承载数据的一个重要角色。作为一个Android开发者,我们需要学会在Android中读写XML数据,下面我们开始学习一下XML数据的解析吧!
1.1、XML数据简介
XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分。您可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。您创建的文件,或文档实例 由元素(标记)和内容构成。当从打印输出读取或以电子形式处理文档时,元素能够帮助更好地理解文档。元素的描述性越强,文档各部分越容易识别。在这里就不在做很深入的学习了,我们只需要知道,XML可以用来存储数据,可以将XML当成是一个小型的数据库,前面我们学习Android数据存储的时候,学习到的SharedPreference存储方式中,底层存储数据就是通过XML的形式。XML数据解析方式有三种,分别是SAX方式、DOM方式、PULL方式,那么我们开始学习一下这三种方式解析XML数据吧!
1.2、SAX方式解析XML数据
SAX(Simple API for XML)解析器是一个基于事件的解析方式,由事件流驱动,从文档的顺序开始到文档结束,中间不可以回退或者暂停。SAX解析器解析速度快,占用内存少,非常适合在Android端使用。
SAX解析器的解析原理就是:对文档进行顺序扫描,当扫描到文档开始,元素开始和结束,文档结束等地方时通知事件处理函数,事件处理函数做出相应处理之后继续扫描,直到文档扫描结束。
常用的SAX接口和类:
Attrbutes:用于得到属性的个数、名字和值。
ContentHandler:定义与文档本身关联的事件(例如,开始和结束标记)。大多数应用程序都注册这些事件。
DTDHandler:定义与DTD关联的事件。它没有定义足够的事件来完整地报告DTD。如果需要对DTD进行语法分析,请使用可选的DeclHandler。
DeclHandler是SAX的扩展。不是所有的语法分析器都支持它。
EntityResolver:定义与装入实体关联的事件。只有少数几个应用程序注册这些事件。
ErrorHandler:定义错误事件。许多应用程序注册这些事件以便用它们自己的方式报错。
DefaultHandler:它提供了这些接LI的缺省实现。在大多数情况下,为应用程序扩,DefaultHandler并覆盖相关的方法要比直接实现一个接口更容易。
SAX解析器的使用步骤:
1、通过SAXParserFactory.newInstance()创建一个SAXParserFactory对象
2、通过SAXParserFactory.newSAXParser()方法返回一个SAXParser解析器
3、实例化一个DefaultHandler对象
4、将第二步创建的SAXParser分配给解析器,对文档进行解析,将事件发送给处理器
下面我们通过一个简单的例子体会一下SAX解析XML数据:
首先是SAXHandler代码:
package com.example.datasave;
import android.util.Log;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Devin on 2016/7/25.
*/
public class SAXHandler extends DefaultHandler {
private CarModel mCarModel;
private ListCarModel mCarModels = new ArrayList();
private static String TAG = SAXHandler;
private String result;
@
文档评论(0)