文档章节

XML之sax解析

monster_nian
 monster_nian
发布于 2016/01/26 11:21
字数 288
阅读 106
收藏 2

XML解析有很多种方法,上次写了一个DOM的解析,这次写一个SAX解析,他们的优缺点在后面的总结中写!

别的先不说,先上代码!

XML:

<?xml version="1.0" encoding="GB2312"?>
<RESULT>
<VALUE>
   <NO>A1234</NO>
   <ADDR>四川省XX县XX镇XX路X段XX号</ADDR>
</VALUE>
<VALUE>
  <NO>B1234</NO>
   <ADDR>四川省XX市XX乡XX村XX组</ADDR>
</VALUE>
</RESULT>

java:

package www.yq.com.src;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Stack;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

/** 
 * @Project     XMLSimpleTest 
 * @File        MyXmlReader.java 
 * @Package     www.yq.com.src 
 * @Date        2016年1月25日 下午4:34:38 
 * @Author      
 * @email       
 */
public class MyXmlReader extends DefaultHandler{
	Stack tags = new Stack();
	
	public static void main(String[] args) {
		File f = new File("E:\\qi.xml");
		SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
		SAXParser parser;
		try {
			parser = saxParserFactory.newSAXParser();
			MyXmlReader handler = new MyXmlReader();
			parser.parse(f, handler);
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		super.characters(ch, start, length);
		String tag = (String) tags.peek();
		if(tag.equals("NO")){
			System.out.println("--------------");
			System.out.println("车牌号:"+new String(ch,start,length));
		}
		if(tag.equals("ADDR")){
			System.out.println("--------------");
			System.out.println("车牌地址:"+ new String(ch, start, length));
		}
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		super.startElement(uri, localName, qName, attributes);
		tags.push(qName);
	}
	

}

运行结果:

© 著作权归作者所有

共有 人打赏支持
monster_nian
粉丝 1
博文 12
码字总数 8312
作品 0
兰州
Android 创建与解析XML(一)—— 概述

Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器、解析器、转换器 API,对 XML 进行解析和转换。 XML,相关有DOM、SAX、JDOM、DOM4J、Xerce...

长平狐
2013/01/06
149
0
Android中XML解析模块的使用方法

在音乐跟电视的项目中,很多都是使用了典型的按照接口规范的流程处理方式。 例如上图,客户端发送一个request请求,服务端就会以xml的数据格式返回一个response响应。但是在客户端界面展示x...

晨曦之光
2012/03/05
1K
2
Android 创建与解析XML(三)—— Sax方式

1. Sax概述 SAX是一种占用内存少且解析速度快的解析器,它采用的是事件启动,不需要解析完整个文档,而是按照内容顺序看文档某个部分是否符合xml语法,如果符合就触发相应的事件,所谓的事件...

长平狐
2013/01/06
84
0
sax的解析原理基础

1:sax解析是什么? SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文...

逐梦的Man
2017/12/18
0
0
Android 创建与解析XML(六)—— 比较与使用

前面介绍了四种创建、解析XML的方式: 0、 Android 创建与解析XML(一)—— 概述 1、 Android 创建与解析XML(二)—— Dom方式 2、 Android 创建与解析XML(三)—— Sax方式 3、 Android ...

长平狐
2013/01/06
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
35分钟前
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
0
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
2
0
设计模式之五 责任链模式(Chain of Responsibility)

一. 场景 相信我们都有过这样的经历; 我们去职能部门办理一个事情,先去了A部门,到了地方被告知这件事情由B部门处理; 当我们到了B部门的时候,又被告知这件事情已经移交给了C部门处理; ...

JackieRiver
今天
1
0
Android中的设计模式之命令模式

参考 《设计模式:可复用面向对象软件的基础 》5.2 Command 命令 对象行为型模式 《Android源码设计模式解析与实战》第11章 让程序畅通执行--命令模式 意图 将一个请求封装为一个对象,从而使...

newtrek
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部