<?xml version="1.0" encoding="utf-8" ?>
<persons>
<person>
<name>zs</name>
<age>12</age>
<sex>男</sex>
</person>
<person>
<name>ls</name>
<age>14</age>
<sex>女</sex>
</person>
<person>
<name>ww</name>
<age>11</age>
<sex>男</sex>
</person>
</persons>
所用XML
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) throws Exception{
SAXParserFactory saxpf = SAXParserFactory.newInstance();
SAXParser saxp = saxpf.newSAXParser();
InputStream is = Test2.class.getClassLoader().getResourceAsStream("resouce/persons.xml");
List<Person> pList = new ArrayList<Person>();
saxp.parse(is,new DefaultHandler(){
private Person person;
String tag;
@Override
public void startDocument() throws SAXException {
System.out.println("开始解析persons.xml");
}
@Override
public void endDocument() throws SAXException {
System.out.println("persons.xml解析完成");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("开始解析"+qName);
tag = qName;
if(qName.equals("person")){
person = new Person();
System.out.println("------------");
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println(qName+"解析完成");
if(qName.equals("person")){
pList.add(person);
person = null;
}
tag = null;
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.println(new String(ch,start,length));
if(tag != null) {
if (tag.equals("name")) {
person.setName(new String(ch, start, length));
}
if (tag.equals("age")) {
person.setAge(new String(ch, start, length));
}
if (tag.equals("sex")) {
person.setSex(new String(ch, start, length));
}
}
}
});
for (Person p :pList) {
System.out.println(p.getName()+" "+p.getAge()+" "+p.getSex());
}
}
}