【幻化万千戏红尘】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:
手动
可以自己控制事件的发展

时间: 2024-11-05 16:38:47

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

【幻化万千戏红尘】qianfeng-Android-Day01-安卓历史及环境的搭建基础学习:

1.数据类型:   集合 2.io 3.多线程 1.方法有没有可能被多个线程调用 4.网络: 1.http协议 2.即时通讯协议 mqtt 3.webservice 5.数据解析 xml webservice json 字符集 unicode  utf-8 6.操作系统的进程和线程的关系 java里线程的入口函数是run函数线程是并行运行的 6.java面向对象=java代码复用 7.非计算机专业的看这几本书 计算机原理 2.linux操作系统原理 3.编译原理  4.软件工程 星月神话 lin

【幻化万千戏红尘】qianfengDay29-Json解析、Gson解析、FASTJSON解析基础学习:

课程回顾: XML:可扩展的标记语言跨平台.跨网络.跨编程语言描述数据作用:1.传输数据2.配置文件3.Android的布局文件 解析XML:1.SAX2.PULL 创建类 今日内容:JSON:JavaScript Object Notation就是符合一定格式的字符串是轻量级,数据交互的格式目前互联网中使用范围最为广泛的数据交互的格式跨平台.跨网络.跨编程语言JSON的规则:{}---->对象,内部只能是属性组成[]---->数组,内部只能是元素组成""---->属

【幻化万千戏红尘】qianfeng-JAVA课程结束总结

JAVA知识点:面向对象:面向对象是一种思想编程的指导 封装:面向对象2大核心:1.类:描述信息,抽象格式:[public/abstract/final] class 类名 { 属性 构造方法 方法} 2.对象:具体的实例格式:类名 对象[=new 类名([实际参数列表])]; this的用法1.代指本类对象2.调用构造方法 方法的参数传递:1.基本类型:传输的是数据的本身2.引用类型:传输的是地址 static:静态1.修饰属性2.修饰方法3.修饰代码块4.修饰内部类 包:1.package:

【幻化万千戏红尘】qianfeng-Android-Day07-AsyncTask基础学习:

异步任务AsyncTask及JSON解析 一.AsyncTask: (一).相关知识回顾: 1.开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的,并且这些操作必须在UI线程中执行. 2.单线程模型中始终要记住两条法则: 1). 不要阻塞UI线程 : 2). 确保只在UI线程中访问Android UI控件. 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread), 主线程主要负责处理与UI相关的事件,如:用户的按键事件

【幻化万千戏红尘】qianfengDay26-Servlet、http协议、URL基础学习:

课程回顾: 线程网络编程SQLiteHTML5 今日内容:ServletHTTP协议XML解析JSON解析正则+注解 网络程序的分类:1.B/S2.C/S 表单的提交方式:1.get:参数信息跟在URL后面传输特点:1.不安全,信息比较敏感2.大小有限制3.中文乱码,URL采用编码格式为:ISO8859-14.效率高2.post:参数信息通过流的形式进行传输特点:1.安全2.大小无限制3.效率低 Servlet:java语言编写的运行在服务器端的程序服务器执行 使用Servlet的步骤:1.创建

【幻化万千戏红尘】qianfengDay25-HTML基础学习:

Tomcat:服务器 免费 主要运行B/S程序 目录说明: bin:执行文件 lib:第三方的jar包 webapps:发布的项目 网络程序结构: 1.B/S 2.C/S HTML:超文本标记语言 (HyperText Markup Language) 超文本:包含音频.视频.图片等内容 Html主要用来做网页(描述信息),后缀名:.html或.htm HTML的语法规则: 1.不区分大小写 2.由固定标签组成(不允许自定义标签) 3.标签有开始也有结束 4.属性的值都得用双引号 5.标签允许嵌

【幻化万千戏红尘】第一周小项目

1.设计猜拳游戏:游戏说明: 类型:剪刀1.石头2.布3其中:剪刀----布----结果---赢石头----剪刀--结果---赢布------石头--结果---赢相同就是平局其他就是输 本系统采用人机对战电脑每局的结果就是通过随机数来完成玩家的结果是通过键盘输入对象的编号通过一定的方法来验证输赢的结果循环进行 退出的条件:1.自愿退出2.输的达到10次的时候 A:退出 B:重新开始 扩展:要求支持金额充值玩家可以指定每次的赌注 注意:随机数,可以使用Math.random():返回[0.0,1.

【幻化万千戏红尘】qianfengDay19-java基础学习:转换流、对象流、打印流、三大标准(重定向)

课程回顾: 流:数据通信的管道常用的流类:1.文件流:File:数据在文件中 1.FileInputStream 2.FileOutputStream 3.FileReader 4.FileWriter2.内存流:ByteArray:数据在内存中(数组) 1.ByteArrayInputStream 2.ByteArrayOutputStream3.缓冲流:Buffered:提高读写效率 1.BufferedInputStream 2.BufferedOutputStream 3.Buffere

【幻化万千戏红尘】qianfeng-Android-Day06-Intent七大属性基础学习:

Intent及其七大属性及intent-filter设置 一.知识点回顾:Activity (一).如何实现Activity页面跳转? 示例代码: //第一种方式: Intent intent = new Intent(MainActivity.this,NextActivity.class); startActivity(intent); //第二种方式: Intent intent = new Intent(); intent.setClass(MainActivity.this, Next