java代码读xml文件的SAX实现方法

来源:互联网 发布:国内财经媒体排名 知乎 编辑:程序博客网 时间:2024/05/29 11:03

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());          }     }}
0 0
原创粉丝点击