Android学习笔记--XML解析

原创 2012年03月31日 11:11:56

1.解析XML的两种方式:

解析XML 有两种方式:SAXDOM。它们各有利弊。

DOM是把 XML文档全部装载到内存中,然后当成一树进行处理。其好处是当成树处理 起来比较方便,但弊端是如果XML文件比较大时,会对内存消耗比较大;

SAX是逐行扫描 XML文档,逐行解析,而且可以在处理 XML文档过程中的任意时刻 中止处理过程,比如找到我们的目标节点,剩下的XML文档内容就可以不读了,直接结束。其 弊端是操作起来相对不方便,而且对XML文档进行处理,如果修改、新增、删除等操作比较不 方便。

SAX是事件驱动型 XML解析的一个标准接口。它的工作原理是读到文档的开始与结束、 标签元素的开始与结束、内容实体等地方时,触发相应的函数,我们就可以在相应的函数中进行 我们所要进行的处理。

SAX,全称SimpleAPI for XML,即是一种接口,也是指一个软件包

作为接口,SAX是事件驱动型XML解析的一个标准接口

2.SAX的原理:

对文档顺序扫描扫描到文档开始结束,元素开始结束等地方时通知事件处理函数

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

文档开始结束时触发文档处理事件

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

任何元数据通常都由单独的事件交互

在处理文档的DTDSchema时产生DTDSchema事件

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

3SAX常用接口

ContentHandler接口

Java类包中特殊的SAX接口封装了一些对事件处理的方法 当遇到事件就会调用响应方法响应

比如:voidstartDocument() void endElements(String uri,String localName,StringqName)、 characters(char[]ch, int start, int length)


4SAX解析

解析文档过程:

创建事件处理程序

创建SAX解析器

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

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

代码大致如下:

//创建一个SAXParserFactory

SAXParserFactoryfactory=SAXParserFactory.newInstance();//XML解析”工厂”

XMLReaderreader=factory.newSAXParser().getXMLReader();//通过上面得到的XML解析” 工厂”对象获得一个XML解析器对象

//XMLReader设置内容处理器

reader.setContentHandler(newMyContentHandler());

这里的MyContentHandler类为继承DefaultHandler(适配器模式所以不是实现 ContentHandler接口、如果是实现ContentHandler接口的话就得实现ContentHandler接口所 提供的所有方法)的类

//开始解析文件

reader.parse(newInputSource(newStringReader(resultStr)));//resultStr为要解析的字符串 //StringReader- - 以流的方式接受字符串

把自己要的解析工作代码写在响应的方法内(MyContentHandler


XML学习笔记 第一记

2012-08-05 1、XML:eXtensible Markup Language,可扩展元标记语言。 2、DTD:Document Type Definition,文档类型定义,用于...
  • qinxiandiqi
  • qinxiandiqi
  • 2014年06月18日 11:07
  • 1019

JAVA学习笔记之(读取XML)

xml(Extensible Markup Language)可扩展标记语言的主要作用: 1)主要是实现不同功能之间的连接(比如订票与 支付) 2)不同系统之间的连接 3)数据共享 2.一种定...
  • calm_IT
  • calm_IT
  • 2016年09月11日 16:17
  • 262

[XML]学习笔记(四)——命名空间

一、 什么是XML命名空间(namespace): 命名空间是一组具有结构的名称的集合,是XML正式标准的补充部分,通过使用URI(统一资源标识)限定元素和属性。URI通常是以一个URL的形式出现,因...
  • CristianoJason
  • CristianoJason
  • 2016年04月13日 21:37
  • 412

Android三种解析XML方式

XML三种解析方式
  • u011310942
  • u011310942
  • 2014年02月18日 21:49
  • 2992

Android几种解析XML方式的比较

XML介绍:Extensible Markup Language,即可扩展标记语言 一、使用SAX解析XMLSAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关...
  • isee361820238
  • isee361820238
  • 2016年08月30日 17:32
  • 7510

Android 个人学习笔记之--- DOM解析XML文件

昨天晚上发了一篇用SAX解析XML文件的博客,有兴趣的可以去看下,今天我用的DOM解析,DOM比SAX更容易掌握,因为她没有涉及回调和复杂的状态管理,然而,DOM的实现常常将所有的XML节点保存在内存...
  • xiaanming
  • xiaanming
  • 2013年05月18日 00:31
  • 5365

VB.net学习笔记(二十一)XML流的读写

System.Xml名称空间支持XML的处理,为了生成和浏览XML文档,使用两种访问方式: 一、读写方式     (一)基于流的方式     特点:速度快,可连续读写,缺点不能作为节点、元素等进...
  • dzweather
  • dzweather
  • 2016年05月22日 12:07
  • 3903

Android中XML数据解析

一般情况下服务器端返回给客户端的数据主要包括三种类型,字符串,xml,json,因此需要解析成为可读数据。xml数据传输,现在已经用的比较少了,而json用的比较广泛。不过还有一些免费的接口还是会返回...
  • MAGIC_JSS
  • MAGIC_JSS
  • 2016年10月17日 22:19
  • 937

android中使用SAX解析xml(封装)

SAX具体怎么用就不说了,网上搜搜一大片。 第一步:建立公共抽象类BaseHandler package com.dc.handler; import java.io.StringRead...
  • gundumw100
  • gundumw100
  • 2017年04月10日 18:08
  • 242

Android:解析XML的三种方式

1、首先,在布局文件中写一个Button控件和用来展示数据的ListView控件。 ...
  • AbbyDream
  • AbbyDream
  • 2017年02月27日 16:01
  • 437
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android学习笔记--XML解析
举报原因:
原因补充:

(最多只允许输入30个字)