预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

XML认证教程:SAXParserXML认证教程:SAXParserSAX是由XML-DEV邮件列表的成员开发的,Java版本由DavidMegginson维护。他们的目的是提供一种更自然的方法来使用XML,这种方法不会涉及到使用DOM的那种开销。什么是SAX读取和操纵XML文件的标准方法是DOM(“文档对象模型”)。遗憾的是,这种方法需要读取整个文件并将它存储到树结构中,因而效率不高、缓慢,并且会过度使用资源。一种替代方法是使用SimpleAPIforXML或SAX。SAX允许正在读取文档时处理该文档,这避免了在采取操作之前需要等待存储文档的所有内容。SAX是由XML-DEV邮件列表的成员开发的,Java版本由DavidMegginson维护。他们的目的是提供一种更自然的方法来使用XML,这种方法不会涉及到使用DOM的那种开销。结果是基于事件的API。解析器将事件(譬如,元素的开始或结束)发送给处理信息的`事件处理程序。然后,应用程序自己可以处理数据。虽然原始文档保持不变,但SAX提供了操纵数据的方法,然后会将该方法导向另一个过程或文档。对于SAX,没有官方的标准;万维网(W3C)或其它官方组织不维护SAX,但在XML社区中,它是一个事实上的标准。SAX处理是如何工作的SAX分析经过其的XML流,这非常象老式的自动收报机纸条。考虑以下XML代码片断:UNIXcolor一般情况下,SAX处理器分析这段代码将生成以下事件:StartdocumentStartelement(samples)Characters(whitespace)Startelement(server)Characters(UNIX)Endelement(server)Characters(whitespace)Startelement(monitor)Characters(color)Endelement(monitor)Characters(whitespace)Endelement(samples)SAXAPI允许开发者捕获这些事件,并对它们进行操作。SAX处理涉及以下几步:创建事件处理程序。创建SAX解析器。将事件处理程序分配给解析器。对文档进行解析,将每个事件发送给处理程序。在SAX与DOM之间,如何选择选择DOM还是SAX,这取决于几个因素:应用程序的目的:如果必须对数据进行更改,并且作为XML将它输出,则在大多数情况下,使用DOM。与使用XSL转换来完成的简单结构更改不一样,如果是对数据本身进行更改,则尤其应该使用DOM。数据的数量:对于大文件,SAX是更好的选择。将如何使用数据:如果实际上只使用一小部分数据,则使用SAX将数据抽取到应用程序中,这种方法更好些。另一方面,如果知道将需要向后引用已经处理过的信息,则SAX可能不是正确的选择。需要速度:通常,SAX实现比DOM实现快。记住SAX和DOM不是互斥的,这一点很重要。可以使用DOM来创建事件的SAX流,可以使用SAX来创建DOM树。事实上,大多数解析器实际常常使用SAX来创建DOM树!使用JAXP来创建解析器接下来我们来看一下JAXP的SAXParser是怎么样工作的。首先声明XMLReaderxmlReader。然后使用SAXParserFactory来创建SAXParser。正是SAXParser给您了XMLReader。importorg.xml.sax.helpers.DefaultHandler;importjavax.xml.parsers.SAXParser;importjavax.xml.parsers.SAXParserFactory;importorg.xml.sax.XMLReader;publicclassSurveyReaderextendsDefaultHandler{publicSurveyReader(){}publicstaticvoidmain(Stringargs[]){XMLReaderxmlReader=null;try{SAXParserFactoryspfactory=SAXParserFactory.newInstance();spfactory.setValidating(false);//设置验证选项,如果您的XML文件是有效文档的话,就不用验证.这将提高处理速度SAXParsersaxParser=spfactory.newSAXParser();xmlReader=saxParser.getXMLReader();}catch(Exceptione){System.err.println(e);System.exit(1);}}}设置内容处理程序一旦创建了解析器,则需要将SurveyReader设置为内容处理程序