SAX采用事件处理的方式解析XML文件,利用SAX解析文档,涉及两个部分:解析器和事件处理器:
解析器可以使用JAXP的API创建,创建出SAX解析器后就可以指定解析器去解析某个XML文档。
解析器采用SAX方式在某个XML文档时,他只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析器到的XML文件内容作为方法参数传递事件处理器。
事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松的得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。
在使用DOM解析XML文档时,需要读取整个XML文档;在内存中构架代表整个DOM树的Doucument对象,从而再对XML文档进行操作。此中情况下,如果XML文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。
SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。
使用SAXParserFactory创建SAX解析工厂
SAXParserFactory spf=SAXParserFactory.newInstance();
通过SAX解析工厂得到解析器对象
SAXParser sp=spf.newSAXParser();
通过解析器对象得到一个XML的读取器
XMLReader xmlReader=sp.getXMLReader();
设置读取器的事件处理器
XMLReader.setContnHander(new BookParserHandler());
解析XML文件
XmlReader.parse(“book.xml”);