【幻化万千戏红尘】qianfengDay28-XML解析之SAX和PULL解析基础学习:

课程回顾:
HTTP协议:超文本传输协议
目前互联网中使用最为广泛的通信协议

URL:统一资源定位符
常用的方式:
1、HttpURLConnection
使用步骤:
 1、创建URL对象
 2、创建连接对象
 3、设置请求属性
 4、连接
 5、验证状态响应码
 6、获取服务器响应信息
 7、释放

2、okHttp
使用步骤:
 1、创建客户端对象
 2、创建请求内容对象(POST)
 3、创建请求对象
 4、创建响应对象
 5、验证是否成功
 6、获取响应内容
 

 


今日内容:
XML:EXtensible Markup Language:可扩展的标记性语言
是跨平台、跨网络、跨编程语言一种数据描述的语言
XML设计出来是为了描述数据,可以实现在不同的网络、平台、编程语言进行数据的交互
XML的用处:
1、传输数据
2、配置文件

XML语法规则:
1、区分大小写
2、标签有始有终
3、标签自定义
4、标签可以嵌套使用
5、属性的值必须使用双引号
6、必须以根标签开始和结束


XML和HTML的区别?
XML:
1、描述数据
2、区分大小写
3、语法更严谨
4、标签自定义

HTML:
1、显示数据
2、不区分大小写
3、语法不是很严谨
4、标签固定

XML格式:
1、引导区
<?xml version="1.0" encoding="UTF-8"?>
必须在文档的第一行
指明xml的版本和文档的编码格式
2、数据区
都是自定义标签
根标签:文档中唯一
必须以根标签开始和结束

XML的解析方式:
1、SAX
JAVA源生的解析方式
读着解析着
以事件驱动的形式,返回事件通知自动调用对应的方法进行数据的处理

2、PULL
Android中极力推荐的解析方式,谷歌开发
以事件驱动进行,返回事件常量,需要程序员控制事件的进行


解析XML的方式和步骤:
一、SAX解析XML步骤:
1、根据XML模板创建类
2、创建DefaultHandle的子类并重写需要的方法
 重写方法:
  1、startDocument() 接收文档开始的通知
  2、endDocument() 接收文档结束的通知
  3、startElement(String uri, String localName, String qName, Attributes attributes)
  接收元素开始的通知,开始标签
  参数说明:
  第一个参数:命名空间 ,区分同名的标签名称
  第二个参数:本地节点名称,就是命名空间的别名
  第三个参数:开始标签名称
  第四个参数:属性集
  Attributes:属性集接口,记录的都是开始标签的属性内容
  常用方法:
   1、getLength:获取属性个数
   2、getQName:获取属性名称
   3、getValue:获取属性的值
  4、endElement(String uri, String localName, String qName)
  接收元素结束的通知,结束标签
  参数说明:
  第一个参数:命名空间 ,区分同名的标签名称
  第二个参数:本地节点名称,就是命名空间的别名
  第三个参数:开始标签名称
  5、characters(char[] ch, int start, int length)
  接收元素中字符数据的通知,文本内容
  参数说明:
  第一个参数:字符数组
  第二个参数:文本内容的起始索引
  第三个参数:文本内容的字符个数
  
3、创建解析工厂
4、创建解析器
5、创建自定义DefaultHandle类的子类对象
6、开始解析--parse
7、获取解析结果


二、PULL解析XML步骤:
1、根据xml模板创建类
2、创建解析工厂
3、创建解析器
4、设置解析的数据源
5、开始解析
XmlPULLParse
常用方法:
getEventType:获取初始事件
getName:获取标签的名称
getText:获取文本内容
getAttributeCount:获取属性个数
getAttributeName:获取属性名称
getAttributeValue:获取属性的值
 重载方法:
 1、第一个参数属性的索引
 2、第一个参数命名空间,第二个参数属性名称

next:获取下一个事件
nextText:获取下一个文本事件(只能获取开始标签和结束标签之间的文本内容)

 

Pull的事件常量:
0---START_DOCUMENT:开始文档
1---END_DOCUMENT:结束文档
2---START_TAG:开始标签
3---END_TAG:结束标签
4---TEXT:文本内容


SAX和PULL解析的区别?
SAX:
自动
无法控制事件的终止

PULL:
手动
可以自己控制事件的发展

 

 

 


 

posted on 2016-08-17 18:46  幻化万千戏红尘  阅读(148)  评论(0编辑  收藏  举报