java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

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文档的过程,就进行解析,

实例:

Jack

13673234578

18

当XMLReader读到标签时,就会调用ContentHandler.startDocument()方法,并把标签名persons作为参数传递过去。在你实现的startElement()方法中需要做相应的动作,以处理当出现时应该做的事情。各个事件随着解析的过程(也就是文档读入的过程)一个个顺序的被抛出,相应的方法也会被顺序的调用,最后,当解析完成,方法都被调用后,对文档的处理也就完成了

下面为几个主要的方法:

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来得那么方便。

(由于代码片段较多,不好粘出来,所以已经上传在我的博客中,想看的小伙伴可以看看,有问题还望能及时指出,共同进步 。

javaxmlSAX

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。