package forXML;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParser {
/**
* 这是实验的第二发~~~哈哈哈
*
* @author catfish
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
// 创建解析器
SAXParserFactory factory = SAXParserFactory.newInstance();
javax.xml.parsers.SAXParser parser = factory.newSAXParser();
// 关联xml与事件处理对象
parser.parse("src/forXML/books.xml", new MyDefaultHandler());
System.out.println("--------我还是一条可爱的分界线--------");
System.out.println("--------查找IDp0002--------");
parser.parse("src/forXML/books.xml", new MyDefaultHandler2());
}
}
// 遍历xml文件
class MyDefaultHandler extends DefaultHandler {
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equals("book")) {
for (int i = 0; i < attributes.getLength(); i++) {
System.out.println(attributes.getQName(i) + ":" + attributes.getValue(i));
}
} else if (!qName.equals("books")) {
System.out.print(qName + ":");
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// TODO Auto-generated method stub
String s = new String(ch, start, length);
if (!s.trim().equals("")) {
System.out.println(s);
}
}
}
// 查找
class MyDefaultHandler2 extends DefaultHandler {
private boolean isId;
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equals("book")) {
for (int i = 0; i < attributes.getLength(); i++) {
// System.out.println(attributes.getQName(i)+":"+attributes.getValue(i));
if (attributes.getValue(i).equals("p0002")) {
this.isId = true;
System.out.println(attributes.getQName(i) + ":" + attributes.getValue(i));
}
}
} else if (!qName.equals("books") && isId) {
System.out.print(qName + ":");
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// TODO Auto-generated method stub
String s = new String(ch, start, length);
if (!s.trim().equals("") && isId) {
System.out.println(s);
}
}
}
