android xml解析 sax

1、简要概述

Android 各种文件都是xml格式的,还有标准的webservice返回的是xml文件,虽然现在的json使用在移动设备端越来越广泛,但是xml格式的解析感觉还是相当必要。


2、sax 解析

xml的解析方式比较多,典型的有DOM SAX PULL方式。其中DOM方式是直接解为树,然后程序调用方法去读取或者写入指定节点。

sax 方式在嵌入式设备领域比较受欢迎主要是因为它轻巧,采用逐行读取,事件驱动机制,采用回调函数的方式进行逐行,逐句,的解析xml。


sax解析xml  是用工厂模式。

场景配置:

           // 创建一个SAXParserFactory
            SAXParserFactory factory = SAXParserFactory.newInstance();
            XMLReader reader = factory.newSAXParser().getXMLReader();            


            // 为XMLReader设置内容处理器
            reader.setContentHandler(new MyContentHandler());
            // 开始解析文件
            reader.parse(new InputSource(mInputStreamReader));

业务类:

MyContentHandler 继承于DefaultHandler 类。方法详见官方文档:http://developer.android.com/reference/org/xml/sax/helpers/DefaultHandler.html

主要用到方法:

xml文档开始解析:startDocument()

一个节点开始解析:startElement(String uri, String localName, String qName, Attributes attributes)

解析到的内容:characters(char[] ch, int start, int length)

结束一个节点解析:endElement(String uri, String localName, String qName)

结束xml文档解析:endDocument()

其中:

uri:命名空间

localName:不带前缀节点名

qName:带前缀节点名(如 xmlns:xsi 其中xmlns叫前缀

attributes:xml属性


3、注意点

sax采用回调函数调用方式,所以需要用一些类变量,关联各个回调函数之间的状态传递,才能得到想要的指定数据。比如 startElement时记录localName,到characters时判断记录的localName是否为想要的,决定是否获取该值。到endElement时清空记录的localName。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值