📅  最后修改于: 2020-11-10 04:37:25             🧑  作者: Mango
SAX(XML的简单API)是xml文档的基于事件的解析器。与DOM解析器不同,SAX解析器不创建任何解析树。 SAX是XML的流接口,这意味着使用SAX的应用程序会接收到有关正在处理的XML文档的事件通知-元素和属性,并依次从文档顶部开始,以结尾处结束。 ROOT元素。
从上至下读取XML文档,识别构成格式正确的XML文档的标记。
令牌的处理顺序与文档中出现的顺序相同。
报告应用程序,解析器在出现令牌时遇到的令牌的性质。
应用程序提供了一个“事件”处理程序,该处理程序必须在解析器中注册。
标识令牌后,将使用相关信息来调用处理程序中的回调方法。
您应该在以下情况下使用SAX解析器:
您可以从上到下以线性方式处理XML文档。
该文档不是深层嵌套。
您正在处理一个非常大的XML文档,该文档的DOM树将占用大量内存。典型的DOM实现使用十个字节的内存来表示XML的一个字节。
要解决的问题仅涉及XML文档的一部分。
解析器一看到数据就可以使用,因此SAX可以很好地适用于通过流到达的XML文档。
由于XML文档是以向前方式处理的,因此我们无法对其进行随机访问。
如果需要跟踪解析器已查看的数据或更改项目的顺序,则必须编写代码并自行存储数据。
此接口指定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开头,int长度) -遇到字符数据时调用。
void ignorableWhitespace(char [] ch,int start,int length) -存在DTD且遇到可忽略的空白时调用。
void processingInstruction(String target,String data) -识别到处理指令时调用。
setDocumentLocator(Locator locator)) -提供一个可以用来识别文档中位置的Locator。
void skippedEntity(String name) -遇到未解决的实体时调用。
void startPrefixMapping(String prefix,String uri) -定义新的名称空间映射时调用。
void endPrefixMapping(String prefix) -当名称空间定义结束其作用域时调用。
该接口指定用于处理连接到元素的属性的方法。
int getLength() -返回属性的数量。
字符串getQName(int index)
字符串getValue(int索引)
字符串getValue(字符串qname)