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
  • 下载

XML文件解析(SAX方式)

XML称为可扩展标记语言(Extensible Markup Language),由标准通用标记语言(SGML:Standard Generalized Markup Language)发展而来,允许...

SAX方式解析xml

  • 2012-04-14 22:47
  • 41KB
  • 下载

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之比较

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示...

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM、SAX以及XMLpull,这里对它们进行总结。如果理解有误,欢迎指正 ^_*一、DOM方式解析:xml是先把xml文档都读到内存中,然后再用DO...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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