`

用 SAX 读取一个 XML 文档(一)

XML 
阅读更多
使用 SAX 读取 XML 文档,也是不需要第三方jar包的,并且 SAX 不是官方制定的规范,可以认为是“民间”制定的,不过得到了很广泛的使用



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<学生名册>
	<学生 学号="1">
		<姓名>张三</姓名>
		<!-- haha -->
		<性别>男</性别>
		<年龄>20</年龄>
	</学生>
	<学生 学号="2">
		<姓名>李四</姓名>
		<性别>女</性别>
		<年龄>19</年龄>
	</学生>
	<学生 学号="3">
		<姓名>王五</姓名>
		<性别>男</性别>
		<年龄>21</年龄>
	</学生>
</学生名册>





package com.syh.xml.sax;

import java.io.File;

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

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

public class SaxTest1 {

	public static void main(String[] args) throws Exception, SAXException {
		
		//step1 : 获得 SAX 解析器工厂实例
		SAXParserFactory factory = SAXParserFactory.newInstance() ;
		
		//step2 : 获得 SAX 解析器实例
		SAXParser parser = factory.newSAXParser() ;
		
		//step3 : 开始进行解析 ,需要传递一个解析对象--> File 对象, 和一个实现了 DefaultHandler 的对象
		parser.parse(new File("student.xml"), new MyHandler()) ;
		
	}
	
}

class MyHandler extends DefaultHandler {
	
	@Override
	public void startDocument() throws SAXException {

		System.out.println("parse began");
	}
	
	@Override
	public void endDocument() throws SAXException {

		System.out.println("parse finished");
	}
	
	/**
	 * 这个方法才是最主要的,因为我们所要得到的信息都是在元素(Element) 中的 
	 */
	
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {

		System.out.println("start element");
		
	}
	
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
	
		System.out.println("finish element");
		
	}
	
}




下面是在控制台打印出现的效果:
输出的结果不是很容易看懂,不过仔细想一下就明白了!
parse began
start element
start element
start element
finish element
start element
finish element
start element
finish element
finish element
start element
start element
finish element
start element
finish element
start element
finish element
finish element
start element
start element
finish element
start element
finish element
start element
finish element
finish element
finish element
parse finished


分享到:
评论

相关推荐

    QT使用SAX读取xml高效-快速.rar

    QT使用SAX读取xml高效-快速.rar SAX(Simple API for XML) 如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取...

    test_sax.rar_XML SAX vs20_sax_sax xml_读取XML文档

    本程序使用XML的SAX(Simple API for XML)机制,实现了读取XML文档内容的功能,

    android 使用Sax解析XML 源码实例

    下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...

    javaSAX方式解析xml文档

    java从服务器读取xml文件并以SAX方式解析附带(服务器与解析源码)

    Java解析XML文档(二):sax读取xml文件导出excel

    NULL 博文链接:https://suky.iteye.com/blog/621169

    SAX是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。

    用于访问XML DTD内容的DTDHandler;  ● 用于低级访问解析错误的ErrorHandler;  ● 用于访问文档内容的ContentHandler,这也是最普遍使用的事件处理器。

    SAX--XML文件读写

    Android SDK只支持采用SAX技术读取XML,SAX采用顺序读取的方式来处理XML文档。这就要求在每读取XML文档的某个节点时会触发相应的事件来处理这个节点。下面基于一个实例讲述SAX的使用

    dom和sax结合解析xml文档

    分析如何结合使用dom技术和sax技术解析xml文件,实现既可以读取大文档xml又可以实现简单操作xml文件

    使用jaxp开发包中的SAX方式解析xml文档

    day02_xml *demo01.App1\App2\App3 使用jaxp开发包中的SAX方式解析xml文档,该方式只能读取文档 *demo4j01.App dom4j CURD XML *domo4j.ex 对dom4j 的封装例子

    xml.rar_XML读取和显示_xml_xml 解析器_读取xml并显示

    通过DOM和SAX解析器,对XML文档进行解析。通过文档所在路径,读取xml文档,并显示相应结果

    android xml解析1

    在用SAX解析xml文档时候,在读取到文档开始和结束标签时候就会回调一个事件,在读取到其他节点与内容时候也会回调一个事件。在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并...

    XML技术 ppt

    126页 XML 简介 编写 XML 文档 使用 DTD 验证 XML 文档 使用 Schema 定义和验证 XML 文档 了解 XML 命名空间 使用 XSLT 转换 XML 文档 使用 DOM 读取和操作 XML 文档 使用 SAX 读取 XML 文档

    Python3基于sax解析xml操作示例

    解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件; 而事件处理器则负责对事件作出相应,对传递的XML数据进行处理。 1、对大型文件进行处理; 2、只需要文件的部分内容,或者只需从文件中得到...

    xml解析新浪新闻_客户端

    解析 XML 通常有两种方式,DOM 和 SAX: ...SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理。

    Java中读取XML 文件的知识点

    xml 解析 dom 文档对象模型(随机访问) 效率慢 受大小限制(10M) ...解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar.

    PULL解析xml的demo

    SAX是一个解析速度快并且占用内存少的xml解析器; 采用事件驱动,它并不需要解析整个文档; 3,PULL(移动端推荐使用) Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型

    XML(SAX与DOM解析)内附实例与PPT

    解析是读取文档并分解为元素的过程 XML处理器(通常称为解析器) Web 应用程序的基本构建快 解析 XML 并为应用程序提供其所需的信息 解析器的类型 进行验证的解析器 检查 XML 文档的有效性和格式规范 不进行验证的...

    数据解析,小型 XML 解析库

    Mini-XML 是一个小型 XML 解析库,您可以使用它来读取应用程序中的 XML 数据文件或字符串,而无需大型非标准库 读取 UTF-8 和 UTF-16 并写入 UTF-8 编码的 XML 文件和字符串。 数据存储在链表树结构中,保留 XML ...

    xml入门教程/xml入门教程

    XSLT,是用于对XML进行文档格式转换,把一个XML文档转换成另一种格式的XML文档,但是其中内容是不变的。 &2.DTD(Document Type Difinition DTD文档是用于规定XML文档的结构。只有结构符合所引用的DTD文件的XML文件...

    详解android使用SAX解析XML文件

    DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。 优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。 缺点:将...

Global site tag (gtag.js) - Google Analytics