SAX和StAX

本文介绍了两种XML解析器:SAX和StAX。SAX通过事件回调解析XML,并报告解析过程中的事件;StAX则提供了迭代解析的方式,允许开发者通过循环遍历所有解析事件。文章还详细说明了这两种解析器的工作原理及使用示例。
摘要由CSDN通过智能技术生成

如果文档很大,使用DOM会显得效率低下:

此时应该使用流机制解析器(streaming parser):

比较古老的SAX和javaSE6添加的StAX解析器

1、SAX解析器

使用事件回调(event callback),在解析XML输入的组成部分时会报告事件,但不会以任何方式存储文档

而是由事件处理器建立相应的数据结构。DOM就是基于SAX解析器的基础上建立的,它在接收到解析器事件时建立

DOM树。

ContentHandler接口中几个重要的回调方法:

startElement,endElement

characters

startDocument、endDocument

得到SAX解析器,代码如下:

SAXParserFactory   factory=SAXParserFactory.newInstance();

SAXParser  parser=factory.newSAXParser();

parser.parse(source,handle);

其中source可以是一个文件,一个URL字符串或者一个输入流,handler属于一个DefaultHandler的一个子类

DefaultHandler类为四个结构定义了空的方法:

ContentHandler

DTDHandler

EntityHandler

ErrorHandler

2、StAX解析器

提供了解析事件的迭代器,是一种"拉解析器(pull parser),与安装事件处理器不同,使用以下基本循环即可迭代所以事件

InputStream in=url.openStream();

XMLInputFactory factory=XMLInputFactory.newInstance();

XMLStreamReader parser=factory.createXMLStreamReader(in);

while(parser.hasNext()){

    in event=parser.next();

    Call parser methods to obtain details

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值