关闭

XML解析之SAX解析过程代码详解

标签: parsexml解析xmlsax解析javaweb
1029人阅读 评论(0) 收藏 举报
分类:

上一篇谢了解析原理和过程,这里应用代码直观认识这个原理:

新建Demo1类:

import java.io.File;

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

/**
 * 第一个SAX读取xml文件程序
 * @author APPle
 *
 */
public class Demo1 {

	
	public static void main(String[] args) throws Exception{
		//1.创建SAXParser对象
		//
		SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
		
		//2.调用parse方法
		/**
		 * 参数一: xml文档
		 * 参数二: DefaultHandler的子类,默认基类,因此没法new。用子类
		 */
		parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
		//使用指定的 DefaultHandler 将指定文件的内容解析为 XML。这里一定要自定义MyDefaultHandler类,且在里面实现业务逻辑。不理解先死记住这种模式。
	}

}

接着给出自定义继承DefaultHandler的MyDefaultHandler



import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
 * SAX处理程序(如何解析xml文档)
 * @author APPle
 *
 */
public class MyDefaultHandler extends DefaultHandler {
	
	/**
	 * 开始文档时调用
	 */
	@Override
	public void startDocument() throws SAXException {
		System.out.println("MyDefaultHandler.startDocument()");
	}
	
	/**
	 * 开始标签时调用
	 * @param qName: 表示开始标签的标签名
	 * @param attributes: 表示开始标签内包含的(属性)【列表】
	 */
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		System.out.println("MyDefaultHandler.startElement()-->"+qName);
	}
	
	/**
	 * 结束标签时调用
	 * @param qName: 结束标签的标签名称
	 */
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		System.out.println("MyDefaultHandler.endElement()-->"+qName);
	}
	
	/**
	 * 读到文本内容的时调用
	 * @param ch: 表示当前读完的所有文本内容
	 * @param start: 表示当前文本内容的开始位置
	 * @param length: 表示当前文本内容的长度 
	 */ 
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		//得到当前文本内容
		String content = new String(ch,start,length);
		System.out.println("MyDefaultHandler.characters()-->"+content);
	}
	
	/**
	 * 结束文档时调用
	 */
	@Override
	public void endDocument() throws SAXException {
		System.out.println("MyDefaultHandler.endDocument()");
	}
	
}
打印输出,更直观认识sax解析过程。下一篇给出应用案例

3
0
查看评论

使用SAX方式解析XML文件

SAX方式解析XML的步骤: 1、通过SAXParseFactory的静态newInstance()方法获取SAXParseFactory实例factory 2、SAXParseFactory实例的newSAXParse()方法返回SAXParser实例parser 3、创建一个类继承Default...
  • u014042146
  • u014042146
  • 2015-09-15 18:16
  • 915

XML解析(一),SAX解析XML

一、概述 SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOC解析,PULL解析(Android特有),SAX与DOC不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用...
  • ydxlt
  • ydxlt
  • 2015-12-05 09:38
  • 15805

简单SAX解析详解全过程

SAX解析: Java JDK自带的解析(SAXParserFactory SAXPaeser DefaultHandler) 特点:一行一行的往下面执行解析的 startDocment startelement characters endElement endDocment 解析步骤: 1.创...
  • lsh364797468
  • lsh364797468
  • 2016-05-05 19:13
  • 2168

java中用sax解析xml的步骤

第一步首先生成一个xml解析工厂对象  如:SAXParserFactory factory = SAXParserFactory.newInstance(); 然后利用这个工厂对象生成一个 xml解析对象  :XMLParser parser=factory.newSAXPa
  • afeiluo
  • afeiluo
  • 2011-09-20 20:51
  • 2100

SAX解析XML文件步骤及问题

昨天学了两种XML的解析方式,今天自己尝试用SAX解析本地XML,出现好多问题,BUG修正之后,在此总结一下,加深记忆,便于提高。 1)自定义一个处理XML 的Handler(PS:这个自定义类用来解析XML,它的重要性不言而喻,许多BUG的出现,最后发现都是在这个类中一些细节没有处理周到...
  • u011931383
  • u011931383
  • 2015-08-26 21:25
  • 322

使用SAX解析XML文件

SAX(Simple API for XML),是指一种接口,或者一个软件包。   DOM:文档驱动。DOM在解析文件之前把整个文档装入内存,处理大型文件时其性能很差,是由于DOM的树结构所造成的,此结构占用的内存较多。 SAX:事件驱动型的XML解析方式。顺序读取XML文
  • zuolongsnail
  • zuolongsnail
  • 2011-05-29 19:57
  • 22400

使用SAX解析XML文件

SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,虽然如此,使用SAX的还是不少,几乎所有的XML解析器都会支持它。      与DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的X...
  • wangkuifeng0118
  • wangkuifeng0118
  • 2012-02-29 10:55
  • 29701

Java解析xml文档之SAX解析

sax解析是一种边读边解析,仅向前读取,不能修改,用来读。sax创建XMLReader三步:SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXPars...
  • new___Smile
  • new___Smile
  • 2016-07-16 00:59
  • 4195

SAX解析,生成xml文件

1、优缺点 优点: SAX 从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题。其实现是通过类似于流解析的技术,通读整个 XML 文档树,通过事件处理器来响应程序员对于 XML 数据解析的需求。由于其不需要将整个 XML 文档读入内存当中,它对系统资源的节省是十分显而易见的,...
  • huanghanqian
  • huanghanqian
  • 2016-04-23 00:56
  • 1305

通过SAX方法解析xml文件

一、SAX与DOM的区别 DOM:先将XML文件的内容全部读取 SAX:通过Handler类对文件的节点由外带内逐个解析,其中startElement表示解析开始便签,endElement表示解析结束标签。 二、SAX解析xml文件的步骤: 1. 通过SAXParserFactory的静态newIn...
  • Stephen_90
  • Stephen_90
  • 2016-05-11 16:37
  • 998
    个人资料
    • 访问:479753次
    • 积分:9152
    • 等级:
    • 排名:第2420名
    • 原创:401篇
    • 转载:39篇
    • 译文:11篇
    • 评论:113条
    博客专栏