SAX标准接口解析XML,逐行解析,以事件为驱动(扫描到文档的开始与结束、元素的开始与结束时通知事件处理函数) (DOM标准,将文件组织成树状) 解析XML文档过程中产生如下事件: 1.startdocument 2.start element:doc 3.characters:HelloWorld 4.endelement:para 5.endelement:doc 6.enddocument 四种接口: ErrorHandler、DTDHandler、EntityHandler、ContentHandler ContentHandler接口(org.xml.sax包中) 方法: startDocument( ); endDocument( ); startElement(StringnamespaceURI, String localName, String qName, Attributes attr); endElement(StringnamespaceURI, String localName, String qName, Attributes attr); characters(char[ ] ch, intstart, int lenth ); 读取到标签内容时的事件处理函数 解析文档步骤: 1.创建事件处理程序 class MyContentHnadler extends DefaultHandler{ startDocument( ){ }; endDocument( ){ }; startElement(StringnamespaceURI, String localName, String qName, Attributes attr ){ }; endElement(StringnamespaceURI, String localName, String qName, Attributes attr){ }; characters(char[ ] ch, intstart, int lenth ){ }; } 2.创建SAX解析器 SAXParserFactory factory = SAXParserFactory.newInstance(); XMLReader reader = factory.newSAXParser().getXMLReader( ); //SAXParser parser =factory.newSAXParser( ); 3.将事件处理程序分配给解析器 为XMLreader设置内容处理器 reader.setContentHandler(newMyContentHandler( )); 4.对文档进行解析,将每个事件发送给处理程序 reader.parse(); //开始解析
|