package handler;
import java.awt.print.Book;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParserHandler extends DefaultHandler {
int bookIndex = 0;
/*
*用来标识解析开始
*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("SAX解析开始");
}
/*
*用来标识解析开始
*/
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("SAX解析结束");
}
/*
*解析xml元素
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// 调用DefaultHandler类的startElement方法
super.startElement(uri, localName, qName, attributes);
//开始解析book元素的属性
if (qName.equals("book")){
bookIndex++;
Book book = new Book();
System.out.println("===================下面开始遍历第"+bookIndex+"本书的内容===================");
// String value = attributes.getValue("id");
// System.out.println("book的属性值是:" + value);
int num = attributes.getLength();
for (int i = 0;i < num;i++){
System.out.print("book元素的第"+(i+1)+"个属性名是"
+attributes.getQName(i));
System.out.println("---属性值是:"+attributes.getValue(i));
if (attributes.getQName(i).equals("id")){
book.setId(attributes.getValue(i));
}
}
}
else if (!qName.equals("book") && !qName.equals("bookstore")){
System.out.print("节点名是:"+qName);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// 调用DefaultHandler类的endElement方法
super.endElement(uri, localName, qName);
//判断是否针对一本书已经遍历结束
if (qName.equals("book")){
System.out.println("===================结束遍历第"+bookIndex+"本书的内容===================");
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// TODO 自动生成的方法存根
super.characters(ch, start, length);
String value = new String(ch, start, length);
if(!value.trim().equals("")){
System.out.println("---节点值是:"+value);
}
}
}
多了一个book的导入