importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;importjavax.xml.parsers.SAXParser;importjavax.xml.parsers.SAXParserFactory;importorg.xml.sax.Attributes;importorg.xml.sax.SAXException;importorg.xml.sax.helpers.DefaultHandler;public class SaxParseService extendsDefaultHandler{private List books = null;private Book book = null;private String preTag = null;//作用是记录解析时的上一个节点名称
/*** 特殊字符数量很多时方法1显然不实用此时可用转义来实现
* < <
* > >
* & &
* ' '
* " "
* 即将xml中的特殊文档全部替换为转义字符
* 如变成<thinking in java>。
* 但是对于这种情况解析过程会发生变化不是一次性解析
* 而是分三步先解析<然后是thinking in java然后是>
* 因此要注意想要获得中数据必须要用StringBuffer将这三部分加起来。
**/StringBuffer sb= newStringBuffer();public List getBooks(InputStream xmlStream) throwsException{
SAXParserFactory factory=SAXParserFactory.newInstance(