Android学习笔记—第七章 数据解析及读取

第七章 数据解析及读取

  1. 网络传输中数据的组织方式:xml、json、http

    (1)xml:可扩展标记语言

    特点:保存少量数据,可跨平台

    解析方式:sax、dom、pull

    a. sax解析:

    特点:速度快,占用内存少。事件驱动,不会一次性把所有内容加载到内存中。

    startElement:元素节点开始

    localName:不带前缀的标签名

    qName:带前缀的标签名

    attributes:节点内的属性和值

    <student id ="1">

    <name>小明</name>

    </student>

    (2)dom解析:

    特点:一次性把所有内容加载到内存中

    使用于服务端编程

    (3)pull解析:

    特点:类似于sax,不会自动读取

    适用于移动设备,占用内存少

  2. json解析

    特点:相对xml,更加节省空间

    (1)json对象:{"key1":"value1","key2":"value2"}

    a. 以{}开始和结束

    b. key必须是字符串,value可以是基础数据类型、String、json对象、json数组

    c. 每条数据以逗号分隔

    例子:

    {"name":"小明","age":25,"married":"true"}

    (2)json的解析

    //根据传入的字符串,得到JSONObject类型对象

    JSONObject jsonObject = new JSONObject(str);

    //根据key,获取对应的数据

    String name = jsonObject.getString("name");

    int age = jsonObject.getInt("age");

    boolean b = jsonObject.getBoolean("married")

    //向jsonOnject中传入数据

    jsonObject.put("name","小红");

    jsonObject.put("age",20);

    jsonObject.put("married","false");

    (3)JSONArray json数组

    a. 以[]开始和结束

    b. 每一条数据都是一个jsonObject

    c. 每条数据以逗号分隔

    例子:

    [{"name":"小明","age":25,"sex":"male"},{"name":"小红","age":23,"sex":"female"}]

    解析一条JSONArray 格式的数据

    //根据传入的字符串得到一个JSONArray 类型的对象

    JSONArray jsonArray = new JSONArray (str);

    for(int i=0; i<jsonArray.length;i++){

    //根据下标得到JSONObject对象

    JSONObject jsonObject = jsonArray.getJSONObject(i);

    //根据key值得到对应的数据

    String name = jsonObject.getString("name");

    int age = jsonObject.getInt("age");

    String sex = jsonObject.getString("sex");

    }

    //向JSONArray 中传入数据

    JSONArray jsonArray = new JSONArray();

    JSONObject jsonObject1 = new JSONObject();

    JSONObject jsonObject2 = new JSONObject();

    jsonObject1.put("name","小黑");

    jsonObject2.put("name","小白");

    jsonArray.put(jsonObject1);

    jsonArray.put(jsonObject2);

时间: 2024-08-01 21:09:55

Android学习笔记—第七章 数据解析及读取的相关文章

Android学习笔记(七)——显示对话框窗口

显示对话框窗口 1.创建Dialog1项目,在activity_main.xml文件中添加一个Button: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:l

【转】Pro Android学习笔记(七):了解Content Provider(下上)

我们通过一个Content Provider小例子进行详细说明.数据源是一个SQLite数据库,名字为books.db,该数据库只含有一个表格,名字为books.表格中含有name,isbn,author,created_date和modified_date几列.我们通过一个名为BookProvider的内容提供者将数据源运行封装,并对外提供增删改查的接口. 首先:定义Content Provider的结构 创建一个Provider,我们首先需要定义好这个provider的结构.通过consta

【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask

目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/ 之前,我们直接在activity中执行http通信,在通信过程中可能会出现连接超时.socket超时等情况,超时阈值一般是秒级,例如AndroidHttpClient中设置的20秒,如果出现超时,就

【转】 Pro Android学习笔记(七五):HTTP服务(9):DownloadManager

目录(?)[-] 小例子 保存在哪里下载文件信息设置和读取 查看下载状态和取消下载 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/ 应用有时需要从web中下载一个大文件,并保存在本地,这个操作过程是标准的,因此在Android2.3引入了DownloadManager类.相关的学习也可以参考Android学习笔记(四六):互联网通信-文件下载. 小例子 先看一个小例子,如下图所示.lay

【转】 Pro Android学习笔记(七六):服务(1):local和remote

文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Android提供服务,服务是运行在后台的组件,没有UI,独立于activity的生命周期.有两种类型的服务:local services和remote services.本地服务是只能被本应用调用,而远端服务则可以被其他应用调用.远端服务通过AIDL(Android Interface Definition Language)描述.在服务

【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件

目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Remote Service在之前的学习笔记 Android学习笔记(五三):服务Service(下)- Remote Service中介绍过.远程服允许行其他应用调用,及允许RPC(remote procedure call).在Android中remote需要

Java学习笔记—第七章 类的深入解析

第七章 类的深入解析 1. 继承 1.1 类继承的方法:在Java中,子类对父类的继承是在类的声明中使用extends关键字来指明的.其一    般格式为:[类修饰符] class <子类名> extends <父类名>{ 类体内容 }.一个类只能直接继承一个    父类,一个父类可以有多个子类. 1.2 成员变量的继承和隐藏:基于父类创建子类时,子类可以继承父类的成员变量和成员方法.但是,     如果在父类和子类中同时声明了一个同名变量,则这两个变量在程序运行时同时存在.即:父

Android学习笔记(七)——常见控件

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 给我们提供了大量的 UI控件,下面我们简单试试几种常用的控件. 一.TextView 在布局文件中加入TextView元素: 1 <TextView android:text="This is TextView!" 2 android:gravity="center" 3 android:layout_width="match_parent&qu

【转】 Pro Android学习笔记(七二):HTTP服务(6):HttpURLConnection

目录(?)[-] Http Get的使用方式 基础小例子 Cookie的使用 重定向 HTTP POST的小例子 基础小例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/ 之前我们都是使用HttpClient来进行http连接,在上一次学习中,HttpClient远比封装socket要来得复杂,有管理器,有连接池.从Android2.3版本开始,可以是java.net.HttpURLC