系出名门Android(10)

介绍

在 Android 中与服务端做 HTTP 通信,解析 XML,通过 Handler 实现异步消息处理

HTTP 通信 - 与服务端做 HTTP 通信,分别以 GET 方式和 POST 方式做演示

XML 解析 - 可以用两种方式解析 XML,分别是 DOM 方式和 SAX 方式

异步消息处理 - 通过 Handler 实现异步消息处理,以一个自定义的异步下载类来说明 Handler 的用法

1、HTTP 通信和 XML 解析的 Demo

MySAXHandler.java

package com.webabcd.communication;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

// 继承 DefaultHandler 以实现指定 XML 的 SAX 解析器
// DOM - W3C 标准,需要把 xml 数据全部加载完成后才能对其做解析,可对树做任意遍历
// SAX - 流式解析,通过事件模型解析 xml,只能顺序解析
public class MySAXHandler extends DefaultHandler {

    private boolean mIsTitleTag=false;
    private boolean mIsSalaryTag=false;
    private boolean mIsBirthTag=false;
    private String mResult="";

    // 打开 xml 文档的回调函数
    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.startDocument();
    }

    // 关闭 xml 文档的回调函数
    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument();
    }

    // 一发现元素开始标记就回调此函数
    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        if (localName == "title")
            mIsTitleTag=true;
        else if (localName == "salary")
            mIsSalaryTag=true;
        else if (localName == "dateOfBirth")
            mIsBirthTag=true;
        else if (localName == "employee")
            mResult += "\nname:" + attributes.getValue("name");    
    }

    // 一发现元素结束标记就回调此函数
    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        if (localName == "title")
            mIsTitleTag=false;
        else if (localName == "salary")
            mIsSalaryTag=false;
        else if (localName == "dateOfBirth")
            mIsBirthTag=false;
    }

    // 一发现元素值或属性值就回调此函数
    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        if (mIsTitleTag)
            mResult += new String(ch, start, length);
        else if (mIsSalaryTag)
            mResult += " salary:" + new String(ch, start, length);
        else if (mIsBirthTag)
            mResult += " dateOfBirth:" + new String(ch, start, length);
    }

    public String getResult(){
        return mResult;
    }
}

时间: 2024-10-06 12:46:01

系出名门Android(10)的相关文章

系出名门 Android系列文章索引

介绍 系出名门 Android 系列文章索引:搭建开发环境, 布局, 菜单, 对话框, 通知, 活动, 服务, 广播, 广播接收器, 控件, 数据库支持, 内容提供器, HTTP通信, XML解析, 异步消息处理 1.系出名门Android(1) - 在 Windows 下搭建 Android 开发环境,以及 Hello World 程序 介绍 搭建 Android 的开发环境,以及写一个简单的示例程序 在 Windows 下搭建 Android 开发环境 Android 项目的目录结构说明 写

系出名门Android(8)

系出名门Android(8) - 控件(View)之TextSwitcher,Gallery,ImageSwitcher,GridView,ListView,ExpandableList 介绍 在 Android 中使用各种控件(View) TextSwitcher - 文字转换器控件(改变文字时增加一些动画效果) Gallery - 缩略图浏览器控件 ImageSwitcher - 图片转换器控件(改变图片时增加一些动画效果) GridView - 网格控件 ListView - 列表控件 E

系出名门Android(7)

系出名门Android(7) - 控件(View)之ZoomControls,Include,VideoView,WebView,RatingBar,Tab,Spinner,Chronometer,ScrollView 介绍 在 Android 中使用各种控件(View) ZoomControls - 放大/缩小按钮控件 Include - 整合控件 VideoView - 视频播放控件 WebView - 浏览器控件 RatingBar - 评分控件 Tab - 选项卡控件 Spinner -

系出名门Android(6)

系出名门Android(6) - 控件(View)之DatePicker,TimePicker,ToggleButton,EditText,ProgressBar,SeekBar,AutoCompleteTextView,MultiAutoCompleteTextView 介绍 在 Android 中使用各种控件(View) DatePicker - 日期选择控件 TimePicker - 时间选择控件 ToggleButton - 双状态按钮控件 EditText - 可编辑文本控件 Prog

系出名门Android(5)

系出名门Android(5) - 控件(View)之TextView,Button,ImageButton,ImageView,CheckBox,RadioButton,AnalogClock,DigitalClock 介绍 在 Android 中使用各种控件(View) TextView - 文本显示控件 Button - 按钮控件 ImageButton - 图片按钮控件 ImageView - 图片显示控件 CheckBox - 复选框控件 RadioButton - 单选框控件 Anal

系出名门Android(4)

系出名门Android(4) - 活动(Activity),服务(Service),广播(Broadcast),广播接收器(BroadcastReceiver) 介绍 在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当于后台运行的 Activity 广播(Broadcast) - 用于发送广播 广播接收器(BroadcastReceiver) -

系出名门Android(3)

介绍 在 Android 中种对话框及各种通知效果的应用 常用对话框的使用,弹出式对话框.日期选择对话框.时间选择对话框.进度条对话框 通知(出现在通知列表)和提示性通知(Toast)的演示 1.常用对话框的演示 res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com

系出名门Android(1)

介绍 搭建 Android 的开发环境,以及写一个简单的示例程序 在 Windows 下搭建 Android 开发环境 Android 项目的目录结构说明 写一个简单的 Hello World 程序 一.在 Windows 下搭建 Android 开发环境 1.安装 JDK (Java Development Kit) http://download.java.net/jdk6/ 2.安装 Android SDK http://developer.android.com/sdk 3.安装 Ecl

系出名门Android(9)

介绍 在Android中使用 SQLite, ContentProvider 数据库支持(SQLite) - Android 开发平台提供了操作 SQLite 数据库的相关 API 内容提供器(ContentProvider) - 当数据需要在应用程序之间共享时,可以在某程序中使用 ContentProvider 定义 URI, 以使其它应用程序可以通过此 URI 访问指定的数据 1.SQLite 的 Demo DatabaseHelper.java package com.webabcd.SQ