xml的SAX解析
2016-06-08 03:35
393 查看
SAX 和 STAX 都是 基于事件驱动 —– SAX推模式 STAX拉模式
SAX原理图如下:
![](http://img.blog.csdn.net/20160608033034670)
SAX常用事件
startDocument() —- 文档开始事件
startElemen() —- 元素开始事件
characters() —- 文本元素事件
endElement() —- 元素结束事件
endDocument() —– 文档结束事件
为什么说SAX是推模式解析? 解析器控制xml文件解析,由解析器调用相应事件方法
在startElemen() endElement() 获得 开始和结束元素名称
在characters() 获得读取到文本内容
在startElemen() 读取属性值
SAX实现示例:
STAX 拉模式xml 解析方式 —– 客户端程序,自己控制xml事件,主动调用相应事件方法
STAX原理图:
![](http://img.blog.csdn.net/20160608041038164)
当使用XML PULL 如果使用Android系统,系统内置无需下载任何开发包,如果想JavaSE JavaEE 使用pull 解析技术 下载单独pull 开发工具包
xpp3 —– XML Pull Parser 3 是pull API 代码实现
使用pull 解析器
1、去网站上 下载 pull 解析器实现 xpp3 (Android 内置)
2、将 xpp3-1.1.3.4.C.jar 导入 java工程
导入jar包 位于 当前工程内部 , 在工程内新建 lib ,将jar复制过来 , 将pull 解析器 jar 添加build path
jar 包就是.class文件 集合压缩包 (采用zip格式压缩)
Pull解析器 使用 stax 解析方式 —- 拉模式解析
Pull采用将xml文档传递 解析器,手动通过next触发文档解析事件,在客户端代码中获取当前事件 ,从而调用相应事件处理方法
3、创建pull 解析器
4、将xml 文档内容传递 pull 解析器
为什么 STAX 解析方式 效率 好于 SAX ?
1、SAX 无选择性的,所有事件都会处理 解析方式,Stax 由用户控制需要处理事件类型
2、在使用Stax进行数据解析时,随时终止解析
Pull 解析器 生成 xml 文档功能 —- 通过 XmlSerializer 生成 xml 文档
解析xml : 文档开始、元素开始、文本元素、元素结束、文档结束
生成xml :生成文档声明(文档开始),元素开始、文本内容、元素结束 、文档结束
1、生成简单xml
2、通过对象数据生成xml
3、通过对象List数据生成xml
在程序中抽取两个方法 —– 1. xml — List对象 2. List对象生成xml
对内存中List进行CURD操作
SAX原理图如下:
SAX常用事件
startDocument() —- 文档开始事件
startElemen() —- 元素开始事件
characters() —- 文本元素事件
endElement() —- 元素结束事件
endDocument() —– 文档结束事件
为什么说SAX是推模式解析? 解析器控制xml文件解析,由解析器调用相应事件方法
在startElemen() endElement() 获得 开始和结束元素名称
在characters() 获得读取到文本内容
在startElemen() 读取属性值
SAX实现示例:
public class SAXTest { public static void main(String[] args) throws Exception { // 1、工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 2、通过工厂获得解析器 SAXParser parser = factory.newSAXParser(); // 3 、创建 Handler MyHandler handler = new MyHandler(); // 4、将xml 文档 和 handler 同时传递给 解析器 parser.parse("server.xml", handler); } } /** * 继承 DefaultHandler 重写 5 个事件方法 * * @author 小鹏鹏 * */ class MyHandler extends DefaultHandler { @Override public void startDocument() throws SAXException { System.out.println("start document..."); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("start element(" + qName + ")..."); // 打印server元素 id 属性 --- 判断当前开始元素是 server if (qName.equals("server")) { System.out.println("id属性的值:" + attributes.getValue("id")); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { String content = new String(ch, start, length); System.out.println("characters: " + content); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("end element(" + qName + ")..."); } @Override public void endDocument() throws SAXException { System.out.println("end document..."); } }
STAX 拉模式xml 解析方式 —– 客户端程序,自己控制xml事件,主动调用相应事件方法
STAX原理图:
当使用XML PULL 如果使用Android系统,系统内置无需下载任何开发包,如果想JavaSE JavaEE 使用pull 解析技术 下载单独pull 开发工具包
xpp3 —– XML Pull Parser 3 是pull API 代码实现
使用pull 解析器
1、去网站上 下载 pull 解析器实现 xpp3 (Android 内置)
2、将 xpp3-1.1.3.4.C.jar 导入 java工程
导入jar包 位于 当前工程内部 , 在工程内新建 lib ,将jar复制过来 , 将pull 解析器 jar 添加build path
jar 包就是.class文件 集合压缩包 (采用zip格式压缩)
Pull解析器 使用 stax 解析方式 —- 拉模式解析
Pull采用将xml文档传递 解析器,手动通过next触发文档解析事件,在客户端代码中获取当前事件 ,从而调用相应事件处理方法
3、创建pull 解析器
4、将xml 文档内容传递 pull 解析器
为什么 STAX 解析方式 效率 好于 SAX ?
1、SAX 无选择性的,所有事件都会处理 解析方式,Stax 由用户控制需要处理事件类型
2、在使用Stax进行数据解析时,随时终止解析
Pull 解析器 生成 xml 文档功能 —- 通过 XmlSerializer 生成 xml 文档
解析xml : 文档开始、元素开始、文本元素、元素结束、文档结束
生成xml :生成文档声明(文档开始),元素开始、文本内容、元素结束 、文档结束
1、生成简单xml
2、通过对象数据生成xml
3、通过对象List数据生成xml
在程序中抽取两个方法 —– 1. xml — List对象 2. List对象生成xml
对内存中List进行CURD操作
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序