package cn.rock.service;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import cn.rock.bean.Person;
public class SAXParseService {
private List<Person> personList = null;
private Person person = null;
private String tag = null;
/**
* @param args
*/
public void SAXParseXML() {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
FileInputStream fileInputStream = new FileInputStream("E:\\Workspaces\\MyEclipse for Spring 8.6\\xml\\bin\\person.xml");
SAXHandler saxHandler = new SAXHandler();
parser.parse(fileInputStream, saxHandler);
System.out.println("personList length: " + personList.size());
Iterator iter = personList.iterator();
while(iter.hasNext()){
Person person = (Person)iter.next();
System.out.println(person.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
class SAXHandler extends DefaultHandler{
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println("tag---" + tag);
if(tag != null){
String data = new String(ch, start, length);
if("name".equals(tag)){
System.out.println("name--- " + data);
person.setName(data);
}else if("age".equals(tag)){
System.out.println("age--- " + data);
person.setAge(new Short(data));
}else if("address".equals(tag)){
System.out.println("address--- " + data);
person.setAddress(data);
}
}
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// System.out.println("endElement---uri: " + uri + " localName: " + localName + " qName: " + qName);
if("person".equals(qName)){
personList.add(person);
person = null;
}
// System.out.println("endElement tag--- " + tag);
tag = null;
}
@Override
public void startDocument() throws SAXException {
personList = new ArrayList<Person>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// System.out.println("startElement---uri: " + uri + " localName: " + localName + " qName: " + qName);
if("person".equals(qName)){
person = new Person();
String id = attributes.getValue(0);
person.setId(new Integer(id));
// System.out.println("id--- " + id);
}
tag = qName;
}
}
}