<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
<书>
<书名 版本="第三版">JSP</书名>
<作者>孙鑫</作者>
<读者>jiengyh</读者>
<价格>65</价格>
</书>
<书>
<书名 版本="第二版">疯狂java讲义</书名>
<作者>李刚</作者>
<价格>82</价格>
</书>
</书架>
package com.saxtest;
import java.io.IOException;
import java.net.ContentHandler;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
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.ext.DefaultHandler2;
import org.xml.sax.helpers.DefaultHandler;
public class SaxTest2 {
public static void main(String[] args) throws Exception{
List<Book> bookList=new ArrayList();
//建立工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
//得到解析器
SAXParser sp=factory.newSAXParser();
//得到读取器
XMLReader reader=sp.getXMLReader();
//设置内容处理器
Handler handler=new Handler();
reader.setContentHandler(handler);
//读取XML文档内容
reader.parse("src/T2.xml");
bookList=handler.getList();
for(Book b:bookList){
System.out.println(b.getName()+"-"+b.getEdition()+"-"+b.getAuthor()+b.getPrice() );
}
}
}
class Handler extends DefaultHandler{
private static String tagName;
private List<Book> bookList=new ArrayList();
private Book book;
@Override
public void startDocument() throws SAXException {
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
tagName=qName;
if(tagName.equals("书")) book=new Book();
if("书名".equals(tagName)) book.setEdition(attributes.getValue("版本"));
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
if("书名".equals(tagName)) {
book.setName(new String(ch,start,length));
}
if("作者".equals(tagName)) book.setAuthor(new String(ch,start,length));
if("价格".equals(tagName)) book.setPrice(new String(ch,start,length));
}
@Override
public void endDocument() throws SAXException {
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("书".equals(qName)){
bookList.add(book);
book=null;
}
tagName=null;
}
public List getList(){
return bookList;
}
}