java代码读xml文件的SAX实现方法
- 实体类
package com.pro.domain;
public class Student {
private int stuId;
private String stuName;
private int age;
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 读取的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>小是</name>
<age>20</age>
</student>
<student id="2">
<name>小收</name>
<age>21</age>
</student>
<student id="1">
<name>小网</name>
<age>18</age>
</student>
<student id="1">
<name>小饭</name>
<age>25</age>
</student>
</students>
- 实现读取的类Mydefault
package com.pro.service;
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.pro.domain.Student;
public class Mydefault extends DefaultHandler {
private List<Student> list=null;
private Student stu=null;
private String temp;
public List<Student> getList() {
return list;
}
public void setList(List<Student> list) {
this.list = list;
}
public Student getStu() {
return stu;
}
public void setStu(Student stu) {
this.stu = stu;
}
@Override
public void startDocument() throws SAXException {
list=new ArrayList<Student>();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if("student".equals(qName)){
stu=new Student();
String stuId=attributes.getValue("","id");
stu.setStuId(Integer.parseInt(stuId));
}
temp=qName;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("student".equals(qName)){
if(stu!=null){
list.add(stu);
}
stu=null;
}
temp=null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if("name".equals(temp)){
if(stu!=null){
stu.setStuName(new String(ch,start,length));
}
}
if("age".equals(temp)){
if(stu!=null){
stu.setAge(Integer.parseInt(new String(ch,start,length)));
}
}
}
}
- SAX解析
package com.pro.service;
import java.io.InputStream;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import com.pro.domain.Student;
public class ReadXmlManager {
public static List<Student> readXml() throws Exception{
InputStream is= Thread.currentThread().getContextClassLoader().getResourceAsStream("student.xml");
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
Mydefault dh=new Mydefault();
saxParser.parse(is, dh);
return dh.getList();
}
}
- 测试
package com.pro.test;
import java.util.List;
import com.pro.domain.Student;
import com.pro.service.ReadXmlManager;
public class Test {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
List<Student> list=ReadXmlManager.readXml();
for(Student s:list){
System.out.println(s.getStuId()+"---"+s.getStuName()+"----"+s.getAge());
}
}
}