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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值