Android入门开发之SAX

Android开发之下载Tomcat服务器的xml文件并使用SAX解析 解析 XML 通常有两种方式,DOM 和 SAX。DOM 虽然是 W3C 的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一个驻留内存的树结构(节点树),然后您的代码才可以使用 DOM 的标准接口来操作这个树结构。但大部分情况下我们只对文档的部分内容感兴趣,根本就不用先解析整个文档,并且从节点树的根节点来索引一些我们需要的数据也是非常 阅读详情

一. SAX简介


   SAX,  Simple API for XML, 是一个解析速度快并且占用内存少的XML解析器,适合于移动平台。 它同时既是一种接口,也是指一个软件包。 作为接口,SAX是事件驱动型XML解析的一个标准接口, 也就是说它不需要解析完整个文档,采用相应的事件触发来进行回调处理。

 

二 . SAX的原理

  SAX的工作原理,简单说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束,元素(element)开始与结束,文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直到文档结束。


  大多数SAX实现都会产生以下类型的事件:

           1. 在文档的开始和结束时触发文档处理事件。

           2. 在文档内每一XML元素接受解析的前后触发元素事件

           3. 任何元数据通常都由单独的事件交付。

           4. 在处理文档的DTD或者Schema时产生DTD或者Schema事件。

           5. 产生错误事件用来通知主机,应用程序解析错误。



SAX在解析文档的过程中会产生如下一系列的事件:

              1. 创建事件处理程序

              2. 创建SAX解析器

              3. 将事件处理程序分配给解析器

              4. 对文档进行解析,将每个事件发送给处理程序



三. ContentHandler接口

       ContentHandler是Java类包中一个特殊的SAX接口,位于org.xml.sax包中。该接口封装了一些对事件处理的方法,当XML解析器开始解析XML输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束,元素开头和结束,以及元素中的字符数据等事件。 当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法来响应该事件。  其接口方法有以下几种:

     void startDocument();

     void endDocument();

     void startElement(....);

     void endElement(....);

     void charaters();   //解析中间元素时调用



四.  SAX使用示例

  

		String strXml = "<TextView         />";   // 这里获取到XML文件的具体内容字符串
		//必须使用try catch, 否则编译器报错
		try {
			SAXParserFactory factory = SAXParserFactory.newInstance();
			XMLReader reader = factory.newSAXParser().getXMLReader(); //XML解析读取类
			reader.setContentHandler(new MyContentHandler());  //设置解析的ContentHandler
			reader.parse(new InputSource(new StringReader(strXml)));
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

public class MyContentHandler extends DefaultHandler   //继承于DefaultHandler
{
	@Override
	public void startDocument() throws SAXException {  //开始解析xml文件
		// TODO Auto-generated method stub
		super.startDocument();
		
		Log.v("XML", "startDocument");
	}
	
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {            //开始解析元素
		// TODO Auto-generated method stub
		super.startElement(uri, localName, qName, attributes);
		
		Log.v("XML", "startElement");
	}
	
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		// TODO Auto-generated method stub
		super.characters(ch, start, length);
		
		Log.v("XML", "characters");
	}
	
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		// TODO Auto-generated method stub
		super.endElement(uri, localName, qName);
		
		Log.v("XML", "endElement");
	}
	
	@Override
	public void endDocument() throws SAXException {
		// TODO Auto-generated method stub
		super.endDocument();
		
		Log.v("XML", "endDocument");
	}
	
	
	
	
}


Android XML数据解析实践:使用SAX解析器 本文还有配套的精品资源,点击获取 简介:本教程深入介绍Android平台下使用SAX解析XML数据的方法,强调其在处理大量数据时内存效率高的特点。通过实例化XML解析器,实现ContentHandler接口以及解析XML文件,本教程展示了如何高效集成XML数据到Android应用,并进行业务逻辑处理。源码项目同时涉及代码结构组织和性能优化,旨在通过实例帮助开发者提升XML处... 阅读详情

相关推荐

从零构建:基于Docker与FRR的OSPF虚拟网络实验室

本文详细介绍了如何利用Docker与FRR构建OSPF虚拟网络实验室,从环境设计到高级网络拓扑配置,再到实验验证与排错。通过容器化技术实现高效资源利用和快速部署,特别适合网络协议教学、企业网络架构验证等场景。

plum99的博客 221

Android SAX解析

在讲这次错误之前,先看一下下面这段代码。  【◆以下解析方法是错误的×】 [java] view plaincopyprint? import java.util.ArrayList;   import java.util.List;      import org.xml.sax.Attributes;   import org.xml

happy++, worry-- 693

超详细!思岚S2激光雷达hector_mapping建图

使用思岚S2激光雷达,在ros平台上利用hector_mapping功能包实现建图功能

m0_50965539的博客 5591

Android安卓使用SAX方式解析xml

Android安卓使用SAX方式解析xml 修改activity_main.xml中代码,添加button控件,实现点击解析 <Buttonandroid:id="@+id/parser"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="解析"/> 2.新建MyHandler类继承DefaultHandler ...

qq_37196621的博客 384

告别裸机:在FreeRTOS上为STM32移植SOEM EtherCAT主站的思路与实战

本文详细介绍了在FreeRTOS环境下为STM32移植SOEM EtherCAT主站的工程实践。通过重构任务调度模型、优化内存管理和中断响应,成功将通信周期抖动控制在±100ns以内,满足工业控制系统的严苛实时性要求。文章包含完整的移植策略、性能优化方法和实测数据,为开发者提供了一套可靠的EtherCAT主站解决方案。

weixin_30342363的博客 388

如何在 R 中执行 Kruskal-Wallis 检验

Kruskal-Wallis 检验用于确定三个或更多独立组的中位数之间是否存在统计学上的显着差异。它被认为是单向方差分析的非参数等效项。本教程介绍了如何在 R 中执行 Kruskal-Wallis 检验。示例:R 中的 Kruskal-Wallis 检验 假设研究人员想知道三种不同的肥料是否会导致不同水平的植物生长。他们随机选择 30 种不同的植物并将它们分成三组,每组 10 株,每组施用不同的肥料。在一个月结束时,他们测量每株植物的高度。使用以下步骤执行 Kruskal-Wallis 检验以确定三个组的中

Mrrunsen的博客 3798

android sax解析相关理解

SAX解析XML SAX是Simple API for XML的缩写,SAX是基于事件驱动的,在用SAX解析xml文档时候,在读取到文档开始和结束标签时候就会回调一个事件,在读取到其它节点与内容时也会回调一个事件.事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并产生事件.事件处理器是DefaultHandler,与DOM比较而言,SAX是一...

yue_sweet的博客 141

闲鱼爬虫实战:模拟手机端破解反爬策略,爬取指定商品搜索数据,爬取闲鱼搜索指定商品(需手机端模拟)o 技术点:抓包分析、cookie与token

技术点作用抓取手机 App 请求,分析 API 结构、Header、参数加密情况requestsPython 中最常用的 HTTP 库,用于发送模拟请求Session 对象自动管理 Cookie,保持会话User-Agent & 设备特征模拟手机型号、系统版本,绕过服务端检测闲鱼部分接口存在签名,需要逆向或复用有效 Token多线程/异步提高爬取效率(需节制,避免封 IP)解析 HTML 或 JSON 数据注意:闲鱼的接口加密程度中等偏上,部分接口存在动态签名(如x-signx-mini-wua。

2201_76125261的博客 712

Android之SAX解析XML

首先我们来了解一下SAX解析器的基本知识: SAX(Simple API for XML)解析器是一种基于事件的解析器,事件驱动的流式解析方式是,从文件的开始顺序解析到文档的结束,不可暂停或倒退。它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理。在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器相

bear_huangzhen的专栏 1万+

【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务

主要是学习数据桥接功能以及构建自己的http服务器,这是一个非常有用的功能。包括各种传感器上报基本上都需要数据桥接功能支持,所以还是希望认真学习这一块开发,然后结合数据库存储等等知识点进行进一步学习。

单片机菜鸟哥的博客 1307

【CASS精品教程】032:CASS11台阶画法案例大全

一、普通无边台阶 二、普通有边台阶 三、普通圆弧无边台阶 四、U型台阶 五、曲线U型台阶 六、L型台阶

智慧空间实验室 7463

android XML解析学习——android.Sax

<br /><br />一.基础知识<br />  在《OPhone XML解析学习--Sax方式》中我们学习了OPhone /Android上使用Java的SAX进行XML解析的方式。而在OPhone/Android平台上使用SAX解析XML,除了使用Java的API外,还可以使用OPhone/Android SDK带的API来实现。OPhone/Android SDK中和SAX解析相关的包为android.sax,在这个包中OPhone/Android提供了都有的SAX API,使用它们可以更加方便的进

blair 1751

基于 STM32 设计的 HC05 蓝牙音箱

本项目介绍如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。该音箱可以接收来自手机或其他蓝牙设备的音频数据,并通过扬声器播放。该项目展示了如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。易于实现功能实用可扩展性强如果您需要开发一个蓝牙音箱,该项目可以作为参考。

走向CTO的路上... 2471

XML解析SAX,超强Android进阶路线知识图谱

下面是辛苦给大家整理的学习路线既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)[外链图片转存中…(img-v1GmnwTt-1711807188688)]下面是辛苦给大家整理的学习路线。

m0_60606468的博客 723

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 如何使用SAX解析XML

今天,简单讲讲android如何使用SAX解析XML 。 昨天,我看代码时,看到了解析xml文档的代码,是使用SAX解析XML。但是我却不会使用SAX,于是在网上查找资料,最终解决了问题。这里记录一下。 解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。 DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结

谢岩的博客 2494

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android XML解析学习——Sax方式

一.简单介绍XML(eXtensible Markup Language),即可扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记描述数据。XML 经常用作 Internet 上的一种数据格式,因此如果您希望通过 Internet 访问数据,则数据很有可能是 XML 格式,或者如果您希望发送数据给 Web 服务,那么您可能也需要发送 XML。简而言之,如果您的 Android 应用程序将利用 Internet,那么您可能需要使用 XML。幸运的是,您可以采用多种方法在 Android 上使用 XM

ichliebephone的专栏 1万+

XML解析SAX,android开发基础课程

/ handler解析xml。(img-zwVmqv0V-1710929372460)](img-ldpttYVL-1710929372460)](img-kGtRsZfq-1710929372460)](img-qPU0ti7D-1710929372461)](img-m8pmDzEp-1710929372461)]/** 返回解析的Person实例数组 *//** Sax方式,解析 XML *//** 返回解析的xml头部信息 *//** Handler处理类 */// 获取解析的xml。

时间与思念 1041

Android XML解析之SAX解析 简单示例讲解

Android开发里,解析xml是很常见的场景了,其中SAX解析与PULL解析是两种比较常用的解析方式。还有DOM解析不太常用,因为它需一次性把xml文件加载到内存里,如果是大文件的话,很占内存,影响性能。 而SAX(Simple API for XML)解析是事件驱动的流式解析方式,并不是把xml全部加载到内存,而是一边读取一边解析,不可暂停或者倒退,直到结束。在解析过程中,会判断当前的节点及内...

本人整理的笔记与总结,涉及Android,Java,React,设计模式,算法等,愿对大家有帮助 767

Android之SAX解析xml

SAX全称simple API for XML,同DOM一样也是一个访问XML文档的接口。SAX并不是一个实际可以直接对XML进行解析的解析器,而是他兼容SAX的解析器要实现的接口帮助类的集合。实现了SAX的解析器有很多,如Apache的Xerces,Oracle的XML Parser等。当然...

chenyijie1529的博客 208

Android中使用SAX方式解析XML文件

在Android中解析XML文主要有三种方式,分别为Simple API for XML(SAX)、Document Object Model(DOM)和Android附带的pull解析器。在本篇文章中主要采用例子说明使用SAX方式解析XML文件。          SAX是一

Android-Idea 5541

Android进阶2之SAX方法解析XML

简介 什么是SAX呢?以前只是听说SAX,SAX的,但从未接触,今天学习一下,顺便做一下笔记。 SAX是Simple API for XML的缩写,它既是一个接口也是一个包。 SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 这个不同于DOM解析,DOM是把全部数据放入内存进行解析。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完

落日小屋 3189

android用sax解析xml,详解android使用SAX解析XML文件

解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。使用场合:一旦读入文档,还需要多次对文档进行操作,并且在硬件资源充足的情况...

weixin_28944305的博客 523

安卓入门——XML解析

XML解析的三种方式 开始自学安卓。打算用3天时间达到能看懂安卓代码的程度。那么,我们开始。 xml解析的三种方式分别是:Dom解析、Sax解析、Pull解析。其中Dom解析和Sax解析在Java ee中用到的比较多,Pull解析一般用于Android开发。 DOM解析 先加载全部代码,进行全部解析,生成树。每个元素都解析为一个Node节点 ,常用到的节点类型又分为: ——元素节点 Elemen...

weixin_44593338的博客 232

android中sax解析xml,android中sax解析xml 操作介绍

step1 编写beanpackage com.activity;public class LinkMan {private String name;private String email;private String linkman;public String getLinkman() {return linkman;}public void setLinkman(String linkman...

weixin_35143455的博客 203

1-4.Android 读取 XML 文件之 SAX 解析编码模板

SAX(Simple API for XML)是一种基于事件的 XML 解析技术,它一边读取 XML 文件一边解析,占用内存少,适用于大型文件

weixin_52173250的博客 1742
上一篇: Android入门开发之 Handler使用
下一篇: Android入门开发之SD卡读写操作
NewJerryj
博客等级 码龄19年 196粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值