java xml解析之SAX

来源:互联网 发布:java项目导入jar包 编辑:程序博客网 时间:2024/06/05 20:45

原理:


SAX解析是读到XML文档的每一部分,就立刻进行解析。调用对应处理器的响应方法。

package com.zhao.stu;import java.util.List;import java.io.IOException;import java.util.ArrayList;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;public class jaxpTest{public static void main(String[] args){try{//实例化SAX工厂SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();//获得解析器SAXParser saxParser = saxParserFactory.newSAXParser();//获得阅读器XMLReader xmlReader = saxParser.getXMLReader();final List<Book> listBooks = new ArrayList<>();//匿名内部类xmlReader.setContentHandler(new DefaultHandler(){private String currentName;private Book book  = null;//开始读到元素@Overridepublic void startElement(String uri, String localName, String qName,Attributes atts) throws SAXException{if(qName.equals("書")){book = new Book();}currentName = qName;}//结束读元素@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException{if(qName.equals("書")){listBooks.add(book);}}//获得元素内容@Overridepublic void characters(char[] ch, int start, int length)throws SAXException{if("書名".equals(currentName)){book.setName(new String(ch,start,length));System.out.println("書名".equals(currentName));System.out.println(currentName.equals("書名"));currentName = null;}}});//解析xml文件xmlReader.parse("src\\com/zhao/stu\\book.xml");} catch (ParserConfigurationException e){// TODO 自动生成的 catch 块e.printStackTrace();} catch (SAXException e){// TODO 自动生成的 catch 块e.printStackTrace();} catch (IOException e){// TODO 自动生成的 catch 块e.printStackTrace();}}}


原创粉丝点击