
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
概述Java SAX解析器是什么?小编查阅很多知识点终于可以给大家分享这次干货了。SAX(Simple XML for XML)是一个基于事件的XML文档解析器。与DOM解析器不同,SAX解析器不创建解析树。SAX是用于XML的流媒体接口,这意味着使用SAX的应用程序接收关于正在处理的XML文档的事件通知元素和属性,从文档顶部开始按顺序接收事件通知,结束于ROOT元素。
从上到下读取XML文档,识别构成格式良好的XML文档的标记。
令牌的处理顺序与它们在文档中的显示顺序相同。
向应用程序报告解析器遇到的令牌的性质。
应用程序提供了一个必须在解析器中注册的“事件”处理程序。
当令牌被识别时,处理程序中的回调方法将被调用相关的信息。
何时使用?
你应该使用SAX解析器-
您可以从上到下以线性方式处理XML文档。
该文件没有深度嵌套。
您正在处理一个非常大的XML文档,其DOM树将消耗太多的内存。典型的DOM实现使用十个字节的内存来表示XML的一个字节。
要解决的问题只涉及XML文档的一部分。
数据在解析器看到后立即可用,所以SAX适用于通过流访问的XML文档。
SAX的缺点
我们没有对XML文档的随机访问,因为它是以前向方式处理的。
如果您需要跟踪解析器已经看到的数据或更改项目的顺序,则必须编写代码并将其存储在您自己的数据中。
ContentHandler接口
此接口指定SAX解析器用来向应用程序通知所看到的XML文档组件的回调方法。
void startDocument()-在文档的开头调用。
void endDocument()-在文档的末尾调用。
void startElement(String uri,String localName,String qName,Attributes atts)-在元素的开头调用。
void endElement(String uri,String localName,String qName)-在元素末尾调用。
无效字符(char [] ch,int start,int length)-遇到字符数据时调用。
void ignorableWhitespace(char [] ch,int start,int length)-当存在DTD且遇到可忽略的空白时调用。
void processingInstruction(String target,String data)-当处理指令被识别时调用。
void setDocumentLocator(Locator locator))-提供一个定位器,可用于识别文档中的位置。
void skippedEntity(String name)-遇到未解析的实体时调用。
void startPrefixMapping(String prefix,String uri)-定义新名称空间映射时调用。
void endPrefixMapping(String prefix)-当名称空间定义结束其作用域时调用。
属性接口
该接口指定了处理连接到元素的属性的方法。
int getLength()-返回属性的数量。
String getQName(int index)
String getValue(int index)
String getValue(String qname)