一、XML解析:

  1、Pull 解析方式:

    1)先获取到一个 XmlPullParserFactory 的实例, 并借助这个实例得到 XmlPullParser 对象;

    2)调用 XmlPullParser 的 setInput() 方法将服务器返回的XML 数据设置进去;

    3)通过 getEventType() 方法可以得到当前的解析事件,可以使用循环来进行解析,如果当前的解析事件不等于 XmlPullParser.END_DOCUMENT,说明解析工作还没完成,调用 next() 方法后可以获取下一个解析事件。

   示例代码:

private void parseXmlWithPull(String xml){
try{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(xml));
//获取节点类型
int eventType = parser.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
// 获取当前解析节点名
String nodeName = parser.getName();
switch(eventType){
// 开始解析某个结点
case XmlPullParser.START_TAG:
break;
// 完成解析某个结点
case XmlPullParser.END_TAG:
break;
default:
break;
}
parser.next();
}
}catch (Exception e){
e.printStackTrace();
}
}

  2、SAX解析方式:

    1)新建一个类继承自 DefaultHandler;

    2)重写如下 5 个方法:

      --startDocument(): 在开始XML 解析的时候调用;

      --startElement(): 在开始解析某个结点的时候调用;

      --characters(): 在获取结点中内容的时候调用;

      --endElement(): 在完成解析某个结点的时候调用;

      --endDocument():完成整个XML 解析的时候调用。

public class ContentHandler extends DefaultHandler {

    @Override
public void startDocument() throws SAXException {
super.startDocument();
}
/**方法里面参数为被解析节点的信息,如localName表示节点名*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
} @Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
} @Override
public void endDocument() throws SAXException {
super.endDocument();
}
}

    3)创建 SAXParserFactory 实例 :SAXParserFactory factory = SAXParserFactory.newInstance();

    4)创建 XMLReader 对象:XMLReader xmlReader = factory.newSAXParser().getXMLReader();

    5)新建自定义的 ContentHandler 对象;

    6)将ContentHandler的实例设置到 XMLReader 中;

    7)调用 XMLReader 的 parse() 方法开始解析:xmlReader.parse(new InputSource(new StringReader(xmlData)));

  代码示例:

private void parseXmlWithSAX(String xml){
try{
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader(); ContentHandler handler = new ContentHandler();
reader.setContentHandler(handler);
reader.parse( new InputSource( new StringReader(xml) ) );
}catch (Exception e){
e.printStackTrace();
}
}

二、Json解析:

  1、使用 JSONObject 解析:

private void parseJsonWithJSONObject(String json){
try{
JSONArray jsonArray = new JSONArray(json);
for(int i = 0; i < jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String data = jsonObject.getString("data");
......;
}
}catch (Exception e){
e.printStackTrace();
}
}

  2、使用 GSON 解析:GSON 解析 Json更为简单

    1)使用 GSON 前需要导入 jar 包:gson-2.2.4.jar

    2)GSON 可以将一段JSON 格式的字符串自动映射成一个对象,从而不需要手动解析;

private void parseJSONWithGSON(String jsonData) {
Gson gson = new Gson();
List<Object> data = gson.fromJson(jsonData, new
TypeToken<List<Object>>() {}.getType());
for (Object obj : data) {
......;
}
}

    3)若解析的不是一个 JSON 数组,则可以直接写成:ObjectType type = gson.fromJson(jsonData, ObjectType.class);

Android--数据解析的更多相关文章

  1. Android数据解析-JSON解析

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  2. Android数据解析——JSON

    示例一: 有这样一个JSON需要解析,比如: {"thresholds": {"1e-3": 65.3,"1e-5": 76.5," ...

  3. android基础(五)网络数据解析方法

    在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...

  4. Android系列---JSON数据解析

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  5. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  7. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  8. 实现android上解析Json格式数据功能

    实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

  9. Android JSON数据解析(数据传输)

    上篇随笔详细介绍了三种解析服务器端传过来的xml数据格式,而对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三 种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通 ...

  10. Android Multimedia框架总结(八)Stagefright框架之AwesomePlayer及数据解析器

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼:http://blog.csdn.net/hejjunlin/article/details/52503057 前言:前面一篇分析了medi ...

随机推荐

  1. Appium移动自动化测试之安装Appium

    第一次学习appium,希望此安装教程可以帮助初学者,共同学习. Appium官网介绍:Appium是与本地,使用开源自动化测试框架, 混合和移动Web应用程序. 它驱动iOS和Android应用使用 ...

  2. RPC学习----Thrift快速入门和Java简单示例

    一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议 ...

  3. windows下C++环境的配置

    方法一--VS: 使用windows开发神器visio studio.这种方法比较简单,直接下载一个最新的vs安装就行.不单单是C++,C.C#.VB等都可以开发. 方法二--只安装C++编译器: 最 ...

  4. IIS上虚拟目录下站点的web.config与根站点的web.config冲突解决方法

    IIS7.5上在站点下部署虚拟目录,访问虚拟目录下的项目提示与父节点配置冲突.,节点与的<system.web>节点与主站点的<system.web>冲突解决方法: 在站点下的 ...

  5. command line

    command line terminal vim 编辑工具 vim 编辑命令 j 光标上移 k 光标下移 l 光标左移 h 光标右移 x / dd 删除一行 v 多行模式 :w 保存 :q 不保存退 ...

  6. 第五章 springboot + mybatis(转载)

    本编博客转发自:http://www.cnblogs.com/java-zhao/p/5350021.html springboot集成了springJDBC与JPA,但是没有集成mybatis,所以 ...

  7. iOS10字体

    iOS10字体随着手机系统的字体改变,当我们手机系统字体改变以后,我们的app的lable也会跟着一起变化: 同样的6sp,在iOS9上面运行字体显示是没问题的,当我的手机更新了iOS10以后,有的界 ...

  8. H5学习系列之Audio和Video

    1.视频文件:音频轨道.视频轨道和一些元数据(视频封面.标题.子标题.字幕等相关信息). 2.目前H5还不支持的:流式音频和视频(H5对视频的支持只限于加载的全部媒体文件).H5的媒体收到跨域资源共享 ...

  9. 《笨办法学C》笔记之Makefile

    使用gcc编译C语言源码 在Linux系统中,C语言源码需要用gcc编译为二进制可执行文件,才能够运行. $ gcc test.c -o test 这句命令就将test.c文件编译为test二进制可执 ...

  10. Linux 配置nginx

    1.首先安装依赖包: # yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre ...