android-文件解析-<八>

1.SAX

全称simple api for xml,即是一种接口,也是一个软件包,作为接口,SAX是事件驱动型XML解析的一个标准接口.

它是扫描一行的xml,并解析它,再扫描下一行并解析。

2.SAX的原理  

     

3.SAX实现读取一个字符串(内容为从网络下载后写入的字符)的代码步骤。

1.获取XMLReader:

        //创建一个SAXParserFactory
       SAXParserFactory factory = SAXParserFactory.newInstance();
       XMLReader reader = factory.newSAXParser().getXMLReader();

2.为XMLReader 设置内容处理器。(该内容处理器类需要用另一个类继承重写里面的方法)

//为XMLReader设置内容处理器
 reader.setContentHandler(new MyContentHandler());
             

3.开始解析文件(用xmlreader的parse方法)

 //开始解析文件,resultStr就是我们要解析的字符串
 reader.parse(new InputSource(new StringReader(resultStr)));

4.ContentHandler类(内容处理器)

 1 //这里继承DefaultHandler,而不是ContentHandler原因是
 2 //采用了适配器模式,我们需要用到ContentHandler某些方法
 3 //不需要其他多余的方法,而DefaultHandler刚好给我们常用需要的方法,没有多余方法
 4 public class MyContentHandler extends DefaultHandler {
 5     String hisname, address, money, sex, status;
 6     String tagName;
 7
 8     public void startDocument() throws SAXException {
 9         System.out.println("````````begin````````");
10     }
11
12     public void endDocument() throws SAXException {
13         System.out.println("````````end````````");
14     }
15
16     public void startElement(String namespaceURI, String localName,
17             String qName, Attributes attr) throws SAXException {
18         tagName = localName;
19         if (localName.equals("worker")) {
20             //获取标签的全部属性
21             for (int i = 0; i < attr.getLength(); i++) {
22                 System.out.println(attr.getLocalName(i) + "=" + attr.getValue(i));
23             }
24         }
25     }
26
27     public void endElement(String namespaceURI, String localName, String qName)
28             throws SAXException {
29         //在workr标签解析完之后,会打印出所有得到的数据
30         tagName = "";
31         if (localName.equals("worker")) {
32             this.printout();
33         }
34     }
35     public void characters(char[] ch, int start, int length)
36             throws SAXException {
37         if (tagName.equals("name"))
38             hisname = new String(ch, start, length);
39         else if (tagName.equals("sex"))
40             sex = new String(ch, start, length);
41         else if (tagName.equals("status"))
42             status = new String(ch, start, length);
43         else if (tagName.equals("address"))
44             address = new String(ch, start, length);
45         else if (tagName.equals("money"))
46             money = new String(ch, start, length);
47     }
48
49     private void printout() {
50         System.out.print("name: ");
51         System.out.println(hisname);
52         System.out.print("sex: ");
53         System.out.println(sex);
54         System.out.print("status: ");
55         System.out.println(status);
56         System.out.print("address: ");
57         System.out.println(address);
58         System.out.print("money: ");
59         System.out.println(money);
60         System.out.println();
61     }
62
63 }
时间: 2024-08-02 22:59:35

android-文件解析-<八>的相关文章

八、Android学习第七天——XML文件解析方法(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:extensible markup language 定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 解析XML的方式: SAX——Simple API for XML,既是一种接口,也是一个软件包采用的是事件驱动,也就是它解析

基于Android2.3.5系统:Android.mk文件解析

*************************************************************************************************************************** 作者:EasyWave                                                                                                               时间:2

android基础知识13:AndroidManifest.xml文件解析

1.重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

学习Android之第八个小程序文件保存(Notification、AndroidTestCase)

效果图:       .java文件有MainActivity.java.FileService.java.FileServiceTest.java, .xml文件有activity_main.xml. 本次注重AndroidTestCase类的使用,在开发中非常实用.用于测试某一功能. 使用AndroidTestCase类,有如下的要求: 1.在AndroidManifest.xml文件中,<manifest></manifest>中添加如下: <instrumentati

Android volley 解析(三)之文件上传篇

前面我们讲了如何通过 volley 实现表单的提交,而这篇文章跟上一篇衔接很大,如果没有看上一篇 blog 的朋友,建议先去看看 Android Volley解析(二)之表单提交篇 因为文件上传实质就是表单的提交,只不过它提交的数据包含文件类型,接下来还是按照表单提交的套路来分析. 数据格式 这里我们通过图片上传的案例来分析,其他文件也是同样的实现方式:以下是我在传图网传图时,上传的数据格式,先来分析一下 POST http://chuantu.biz/upload.php HTTP/1.1 H

Android init.rc 文件解析

init.rc文件解析过程 我们已经知道init.rc的结构,应该可以想到解析init.rc的过程就是识别一个个section的过程,将各个section的信息保存下来,然后在init.c的main()中去执行一个个命令. android采用双向链表(关于双向链表详解见本文第三部分)来存储section的信息,解析完成之后,会得到三个双向链表action_list.service_list.import_list来分别存储三种section的信息上. 1. init.c中调用init_parse

Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上

                                                                                                                                               本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 在之前一篇博文中<<Android中View绘制流程以及invalidate()等相关方法分析>>,简单的阐述

Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PARENT/FILL_PARENT属性的原理说明 xml布局文件解析成View树的流程分析. 希望对大家能有帮助.- - 分析版本基于Android 2.3 . 1.WRAP_CONTENT.MATCH_PARENT/FILL_PARENT 初入Android殿堂的同学们,对这三个属性一定又爱又恨.爱的是使

android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xstream 二: 把对象转换成xml android XMl 解析神奇xstream 三: 把复杂对象转换成 xml 1.文件准备 把一个预先写好的xml文件放在android项目目录的 asset 文件夹. 文件内容为: <blog> <age>30</age> <

android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xstream 二: 把对象转换成xml android XMl 解析神奇xstream 三: 把复杂对象转换成 xml android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象 1.建立JavaBeen package com.android10; public class