xml解析的sax解析方式

原创 2016年08月29日 15:44:29
Sax解析(xml文件夹里面的xml文件不能用sax解析)
思路:xml解析出来的是属性值和属性内容,所以定义一个channel类,成员变量为xml的属性,这个类用来封装xml解析出来的属性内容,并且重写tostring方法,将解析出的内容显示出来,每个channel对象可以封装一条xml记录
定义一个list数组,用来存储channel对象,所以这个数组就封装了所有的xml记录,遍历这个数组,就可以显示出xml中的所有记录

准备工作:先创建一个channel类,用来封装xml中的内容,创建三个变量id,
mainact类
1:创建监听器类对象
SAXParserHelper helperHandler = new SAXParserHelper();
2:创建解析器,xmlreader
XMLReader xmlReader = SAXparserFactory
3:为解析器注册监听器
xmlreader.setcontenthandler(helperHandler)
4:得到输入流
(三种方式,在src中的xml,在assets中的xml,在res中raw的xml)
5:根据输入流得到输入源
inputsourse is = new inputsourse(stream);
6:开始解析
xmlreader.parse(is);
return heperhanler.getlist();(解释时监听器在监听,解析时会调用一个监听的方法,所以要写个监听器类)
将xml中的内容先装到channel中,创建channel对象,然后将channel对象装到list数组中,list数组在监听器中

监听器类:
监听器类中有characters,enddocument,endelement,startdocument,startelement五个重写方法
List<channel> list数组
1 监听开始时先触发startdocument方法,这个方法用于新建一个list数组对象,所以刚开始还要定义一个数组
new list<channel>
2 然后解析看到channel标签,然后会执行startelement方法,形参中有一个localname,为channel,方法中判断localname 是否为item,不是,所以if判断为false,内容没被执行
3 然后解析看到item,还是执行startelement方法,这次localname是item,执行if里面的内容,
if里面内容为
创建channel对象,
形参里面还有一个attributes ,为item的属性,有两个
然后有个for循环,
for(int i= 0,i<attributes.getlength(),i++){
if(attributes.getlocalname(i).equals("id")){
channel.setId(attributes.getvalue(i))
}else ifif(attributes.getlocalname(i).equals("url")){
channel.setId(attributes.getvalue(i))
}
这个for循环的作用,就是将解析出来的值装入channel对象中
这个startelement的内容,就是得到解析内容,然后装入对象中,形参用于得到解析内容,里面的if判断用于将内容装入channel对象中

4 只装入了item属性值,还没扫描到item里面的内容
然后扫描到内容,类似腾讯,然后会执行characters方法,形参内容有char[] ch,int start,int length
腾讯在char[] ch数组中,传入这个方法,length为char[] ch数组的长度
characters方法的内容
String theString = String.valueof(ch,start,length); 将数组内容腾讯装入String字符串中
然后做一个if判断,将内容装入到channel对象中

5 :然后扫描到item的结束标签,执行endelement方法
内容:if(localname.equals("item")){
list.add(channel);
}
这个方法作用是把channel装到list数组中

6 :然后扫描到channel结束标签,再执行endelement,不符合if判断,没作用

7:然后调用一下enddocument方法,没什么用

监听内容结束,将xml里面内容装到了一个list数组中,然后监听类中设定一个getlist方法
返回值为list数组,其他类可以通过调用这个方法来得到list数组


android 以SAX方式解析xml

  • 2016年03月09日 17:11
  • 2.48MB
  • 下载

SAX方式解析xml

  • 2012年04月14日 22:47
  • 41KB
  • 下载

Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别

XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解...

xml 三种解析方式dom,sax,dom4j

  • 2013年07月04日 15:50
  • 958KB
  • 下载

iOS ——XML数据结构及其两种解析数据的方式SAX 、DOM

1.解析的基本概念 所谓解析:从事先规定好的格式中提取数据 解析的前提:提前规定好格式、数据提供方按照格式提供数据、数据获取方则按照格式获取数据。 iOS 常见的解析:XML 解析、JSON 解...

[Android]四种方式解析字符串----JSON、SAX、DOM、XML

当是练习吧,分别以JSON、SAX、DOM、XML(android.util.XML)来解析字符串。个人感觉这四种方式的实现由难到易的顺序是:SAX→XML→DOM→JSON。 JSON解析的内容如下...
  • sodino
  • sodino
  • 2011年04月06日 23:51
  • 3097

XML解析方式SAX和DOM比较.

  • 2016年06月24日 13:28
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xml解析的sax解析方式
举报原因:
原因补充:

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