java解析xml 之SAX 解析方式原理
来源:互联网 发布:mysql order by limit 编辑:程序博客网 时间:2024/05/29 18:49
Java 对xml 数据的解析
HTTP 网络传输中的数据组织方式有三种:
1:HTML 方式
2:XML方式
3:JSON 方式
XML :称为可扩展标记语言,他与HTML 一样,都是通用标记语言,XML是Internet环境中跨平台的,依赖与于内容技术,是目前处理结构化文档信息的有力工具,可扩展标记语言是一种简单的数据存储语言,使用一系列简单的标记描述数据。非常适合万维网的传输。
XML 的结构解析如下:
1:节点
2:元素
3: 属性和属性值。
由于XML的扩展性强,致使它需要有稳定的基础规则来扩展,规则如下:
1:开始标签和结束标签匹配,
2:嵌套标签不能互相嵌套。
3:区分大小写。
Android解析的方式如下:
1:DOM (org.w3c.dom)
“文档对象模型”方式,解析完的XML将生成一个树状的对象。
2:SAX (org.xml.asx)
以事件的形式通知程序,对XML进行解析。
3:PULL :
类似于SAX 方式,程序以“拉取”方式对XML 进行解析。
SAX以事件流来解析,边读边触发事件函数完成解析,适用于较大的XML,DOM加载整个xml文件,最终在内存中创建一个DOM树,操作DOM节点比较简单。
DOM解析与SAX 区别
在处理DOM的时候,需要读入整个XML文档,然后在内存中创建DOM树,生成DOM树上的每个NODE对象,当文档比较小的时候,不会造成问题,当文档比较大的时候,处理DOM就会变得费时,特别是内存的需求,此时对于某些应用使用DOM将得不偿失,SAX则是解决这一问题的很好选择。
SAX 是事件驱动的,器不需要读入整个文档,文档的读入过程就是SAX的解析过程,事件驱动,是指一种基于回调机制的程序运行方法,在XML Reader 接受XML文档的过程,就进行解析,
实例:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id = "1">
<name>Jack</name>
<tel>13673234578</tel>
<age>18</age>
</person>
</persons>
当XMLReader读到<persons>标签时,就会调用ContentHandler.startDocument()方法,并把标签名persons作为参数传递过去。在你实现的startElement()方法中需要做相应的动作,以处理当<persons>出现时应该做的事情。各个事件随着解析的过程(也就是文档读入的过程)一个个顺序的被抛出,相应的方法也会被顺序的调用,最后,当解析完成,方法都被调用后,对文档的处理也就完成了
下面为几个主要的方法:
void characters(char[] ch, int start, int length):这个方法用来处理在XML文件中读到字符串,它的参数是一个字符数组,以及读到的这个字符串在这个数组中的起始位置和长度,我们可以很容易的用String类的一个构造方法来获得这个字符串的String类:String charencontered=new String(ch,start,length)。
void startDocument():当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。
void endDocument():当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。
void startElement(String namespaceuri, String localname, String qname, Attributes atts):当读到一个开始标签的时候,会触发这个方法
注意:SAX中一个重要的特点就是它的流式处理,在遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。这使得SAX在编程处理上没有DOM来得那么方便。
(由于代码片段较多,不好粘出来,所以已经上传在我的博客中,想看的小伙伴可以看看,有问题还望能及时指出,共同进步 。)
- java解析xml 之SAX 解析方式原理
- JAVA 解析XML之SAX方式
- JAVA解析XML之SAX方式
- java解析xml(sax方式)
- java之SAX解析XML
- java xml解析之SAX
- Java之SAX 方式解析 XML(学习笔记)
- java(12)--xml之sax方式解析文档
- Java中解析XML文件之SAX方式
- java简单解析xml之SAX解析
- Java 解析 XML 文件之 SAX 解析
- Java XML解析之SAX解析
- Java解析xml文档之SAX解析
- SAX方式解析XML
- SAX方式解析XML
- XML解析-SAX方式
- XML解析之Pull、Sax方式
- JAVA SAX 方式解析XML文件
- iOS设计模式-工厂方法
- vmware中centos虚机ping不同外网问题解决
- 变化的你--写给宝宝
- ZooKeeper管理员指南——部署与管理ZooKeeper
- MDI笔记
- java解析xml 之SAX 解析方式原理
- [Scala函数特性系列]——使用可变参数
- 背包问题(非递归解法)
- c++ 一个头文件引用另一个头文件的类
- 项目名字还没有想好,待定
- Linux中跨网段ping问题
- linux命令 dd
- Android-Universal-Image-loader源码解析
- android中的intent