JavaWeb学习笔记-XML-5

来源:互联网 发布:lua保存数据 编辑:程序博客网 时间:2024/06/05 04:15

SAX
解析器
事件处理器

public static void main(String[] args){    //创建解析工厂    SAXParserFactory factory = SAXParserFactory.newInstance();    //得到解析器    SAXParser sp = factory.newSAXparser();    //得到读取器    XMLReader reader = sp.getXMLReader();    //设置内容处理器    //reader.setContentHander(new ListHandler);    BeanListHandler handle = new BeanListHandler();    reader.setContentHander(hndle);    //读取xml文档内容    reader.parse("src/book.xml");    List<Book> list = handle.getBookList();    System.out.println(list);}//内容处理器class ListHandler implements ContentHandler{    public void startElement(String url, String localName, String name, Attributes atts)throws SAXException{        System.out.println("<"+name+">");        for(int i=0; atts!=null && i<atts.getLnegth();i++){            String attName = atts.getQName();            String attValue = atts.getValue();        }    }    public void characters(char[] ch,int start, int length)throws SAXException{        System.out.println(new String(ch,start,length));    }    public void endElement(String url, String localName, String name, Attributes atts)throws SAXException{        System.out.println("<"+name+">");    }    ....
//定义处理器//获取指定标签值clas TagValueHandler extends DefaultHandler{    private  String currentTag;//记住当前解析到的标签    public void startElement(String url, String localName, String name, Attributes atts)throws SAXException{        currentTag = name;        }    }    public void characters(char[] ch,int start, int length)throws SAXException{        if("作者".equals(currentTag)){            System.out.println(new String(ch,start,length));        }    }    public void endElement(String url, String localName, String name, Attributes atts)throws SAXException{        currentTag = null;    }}
//常用处理器//把xml文档中的每一本书封装到一个book对象中//并把多个book对象放在一个list集合中class BeanListHandler extends DefaultHandler{    private List list = new ArrayList();    private String currentTag;    private Book book;    public void startElement(String url, String localName, String name, Attributes atts)throws SAXException{        currentTag = name;        if("书".equals(currentTag)){            book = new Book();        }    }    public void characters(char[] ch,int start, int length)throws SAXException{        if("书名".equals(currentTag)){            String name = new String(ch,start,length);            book.setName(name);        }        if("作者".equals(currentTag)){            String author = new String(ch,start,length);            book.setName(author);        }        if("售价".equals(currentTag)){            String prive = new String(ch,start,length);            book.setName(price);        }    }    public void endElement(String url, String localName, String name, Attributes atts)throws SAXException{        if(name.equals("书")){            list.add(book);            bool = null;        }        currentTag = null;    }    public List getBookLists(){        return list;    }}public class Book{    private Stirng name;    private String author;    private String price;    ...//get set 方法}
原创粉丝点击