在天气预报的项目中要使用关于XML的解析,就进行一些总之给大家分享分享。

          在Android中解析XML方式有三种基本的解析方式:DOM、SAX、PULL;(其他需添加外部jar包的dom4j等解析方式就不再介绍)

         首先对这三种方式进行一个简单的介绍:

DOM:

DOM解析XML文件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来是比较直观的,并且在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以文档树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM也是可行的。

SAX:

SAX是一种占用内存少且解析速度快的解析器,它采用的是事件启动,它不需要解析完整个文档,而是按照内容顺序 看文档某个部分是否符合xml语法,如果符合就触发相应的事件,所谓的事件就是些回调方法(callback),这些方法 定义在ContentHandler中,下面是其主要方法:


startDocument:当遇到文档的时候就触发这个事件 调用这个方法 可以在其中做些预处理工作


 


startElement: (String namespaceURI,String localName,String qName,Attributes atts)当遇开始标签的时候就会触发这个方法。


endElement(String uri,String localName,String name):当遇到结束标签时触发这个事件,调用此法可以做些善后工作。


charachers(char [] ch,int start,int length):当遇到xml内容时触发这个方法,用new String(ch,start,length)可以接受内容。


Pull:官方网站:http://xmlpull.org/

Pull 解析和 Sax 解析很相似,都是轻量级的解析。在 Android 的内核中已经嵌入了 Pull,所以我们不需要再添加第三方 jar 包来支持 Pull。

Pull 解析和 Sax 解析不一样的地方有:

1)Pull 读取 XML 文件后触发相应的事件调用方法返回的是数字

2)Pull 可以在程序中控制想解析到哪里就可以停止解析

使用Pull解析器解析XML文件

  1.  Xml.newPullParser() 获得解析器

  2  parser.setInput(in, "UTF-8") 设置输入流以及编码

  3. parser.next() 获取下一个解析事件,得到一个事件代码

  4. XmlPullParser中定义了常量来标识各种解析事件