xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<data>
<student id="1">
<name>student0</name>
<age>10</age>
<sex>女</sex>
<address>陕西西安</address>
</student>
<student id="2">
<name>student1</name>
<age>11</age>
<sex>男</sex>
<address>陕西西安</address>
</student>
<student id="3">
<name>student2</name>
<age>12</age>
<sex>女</sex>
<address>陕西西安</address>
</student>
<student id="4">
<name>student3</name>
<age>13</age>
<sex>男</sex>
<address>陕西西安</address>
</student>
<student id="5">
<name>student4</name>
<age>14</age>
<sex>女</sex>
<address>陕西西安</address>
</student>
<student id="6">
<name>student5</name>
<age>15</age>
<sex>男</sex>
<address>陕西西安</address>
</student>
<student id="7">
<name>student6</name>
<age>16</age>
<sex>女</sex>
<address>陕西西安</address>
</student>
<student id="8">
<name>student7</name>
<age>17</age>
<sex>男</sex>
<address>陕西西安</address>
</student>
<student id="9">
<name>student8</name>
<age>18</age>
<sex>女</sex>
<address>陕西西安</address>
</student>
<student id="10">
<name>student9</name>
<age>19</age>
<sex>男</sex>
<address>陕西西安</address>
</student>
</data>
handler
package com.sax;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.xmlpull.Student;
public class StudentHandler extends DefaultHandler {
private Student student=null;
private String tag;
private List<Student> list=null;
public List<Student> getList() {
return list;
}
public void setList(List<Student> list) {
this.list = list;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String data=new String(ch,start,length);
if(null!=tag){
if("name".equalsIgnoreCase(tag)){
student.setName(data);
}else if("age".equalsIgnoreCase(tag)){
student.setAge(data);
}else if("sex".equalsIgnoreCase(tag)){
student.setSex(data);
}else if("address".equalsIgnoreCase(tag)){
student.setAddress(data);
}
}
}
@Override
public void endDocument() throws SAXException {
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
if("student".equalsIgnoreCase(name)){
list.add(student);
student=null;
}
tag=null;
}
@Override
public void startDocument() throws SAXException {
list=new ArrayList<Student>();
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
if("student".equals(name)){
student=new Student();
if(attributes!=null){
student.setId(Integer.parseInt(attributes.getValue(0)));
}
}
tag=name;
}
}
SaxXmlParse
package com.sax;
import java.io.File;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import com.xmlpull.Student;
/**
* <pre>
* sax解析xml
* </pre>
* @author scott
*
*/
public class SaxXmlParse{
public List<Student> parseXML() throws Exception{
SAXParserFactory parserFactory=SAXParserFactory.newInstance();
SAXParser parser = parserFactory.newSAXParser();
//XMLReader reader=parser.getXMLReader();
StudentHandler studentHandler=new StudentHandler();
//reader.setContentHandler(studentHandler);
//reader.parse(new InputSource(new FileInputStream(new File("D:\\workspace\\demo\\src\\students.xml"))));
parser.parse(new File("D:\\workspace\\demo\\src\\students.xml"), studentHandler);
return studentHandler.getList();
}
public static void main(String[] args) throws Exception{
List<Student> list=new SaxXmlParse().parseXML();
for (Student stu : list) {
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge()+"\t"+stu.getAddress());
}
}
}
效果图
1 student0 女 10 陕西西安
2 student1 男 11 陕西西安
3 student2 女 12 陕西西安
4 student3 男 13 陕西西安
5 student4 女 14 陕西西安
6 student5 男 15 陕西西安
7 student6 女 16 陕西西安
8 student7 男 17 陕西西安
9 student8 女 18 陕西西安
10 student9 男 19 陕西西安