<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="001" xx="嘻嘻">
<name>林明</name>
<sex>男</sex>
<age>26</age>
</student>
<student id="002" xx="嘻嘻">
<name >黃亮</name>
<sex>男</sex>
<age>21</age>
</student>
</students>
public class Student {
private String id;
private String name;
private String sex;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.id+","+this.name+","+this.sex+","+this.age;
}
}
import java.util.ArrayList;
import java.util.List;
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 com.java.model.Student;
public class SAX02 extends DefaultHandler{
private List<Student> students=null;
private Student student=null;
private String preTag=null;//標記上一個節點名稱
@Override
public void startDocument() throws SAXException {
System.out.println("開始讀取學生信息");
students=new ArrayList<Student>();
}
@Override
public void endDocument() throws SAXException {
System.out.println("\n 學生信息讀取完畢");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if("student".equals(qName)){
student=new Student();
student.setId(attributes.getValue(0));
}
preTag=qName;
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if("student".equals(qName)){
students.add(student);
student=null;
}
preTag=null;
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if(preTag!=null){
String content=new String(ch,start,length);
if("name".equals(preTag)){
student.setName(content);
}else if("sex".equals(preTag)){
student.setSex(content);
} else if("age".equals(preTag))
student.setAge(Integer.parseInt(content));
}
}
public static void main(String[] args) throws Exception{
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
SAX02 sax02=new SAX02();
parser.parse("src/students.xml",sax02);
System.out.println(sax02.students);
for(Student s:sax02.students){
System.out.println(s);
}
}
}
開始讀取學生信息
學生信息讀取完畢
[001,林明,男,26, 002,黃亮,男,21]
001,林明,男,26
002,黃亮,男,21