import java.io.InputStream;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import junit.framework.TestCase;
public class SAXPerson extends TestCase{
public static List<Person> getPerson(InputStream xmlStream) throws Exception {
//第一种方式用反射
/*SAXParser parser = (SAXParser)Class.forName("com.sun.org.apache.xerces.internal.parsers.SAXParser").newInstance();
PersonDefaultHandler handler = new PersonDefaultHandler();
parser.setContentHandler(handler);
parser.parse("D:\\person.xml");
return handler.getPersons();*/
//第二种方式用工厂模式
PersonDefaultHandler handler = new PersonDefaultHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parse = factory.newSAXParser();
parse.parse(xmlStream, handler);
return handler.getPersons();
}
public void main(String[] args) throws Exception {
// System.out.println("person: " + getPerson().size());
//
// for (int i = 0; i < getPerson().size(); i++) {
// Person person = getPerson().get(i);
// System.out.println("id:"+person.getId() + " name:" + person.getName() + " age:"
// + person.getAge());
//
// }
InputStream input = this.getClass().getClassLoader().getResourceAsStream("D:\\person.xml");
SAXPerson sax = new SAXPerson();
List<Person> persons = sax.getPerson(input);
for (Person person:persons) {
System.out.println(person.toString());
}
}
}