SAX解析
来源:互联网 发布:linux下mv命令 编辑:程序博客网 时间:2024/06/06 13:15
//stu.xml<?xml version="1.0" encoding="UTF-8" standalone="no"?><exam><student><name>张三</name><location>西安</location><grade>98</grade></student><student><name>李四</name><location>临潼</location><grade>59</grade></student></exam>
sax_study.java
package com.SAX;import java.io.IOException;import java.util.ArrayList;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;import com.student.Student;public class sax_study {public static void main(String[]args) throws ParserConfigurationException, SAXException, IOException{SAXParserFactory factory=SAXParserFactory.newInstance();SAXParser sp=factory.newSAXParser();XMLReader reader=sp.getXMLReader();BeanListHandler blh=new BeanListHandler();reader.setContentHandler(blh);reader.parse("src/stu.xml");ArrayList al=blh.getStudents();for(int j=0;j<al.size();++j){Student stu=(Student) al.get(j);System.out.println(stu.getName()+"---"+stu.getLocation()+"---"+stu.getGrade());}}}class BeanListHandler extends DefaultHandler{ArrayList list=new ArrayList();String current_tag=null;Student stu=null;public ArrayList getStudents(){return list;}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if("student".equals(qName)) //避免空指针异常,所以把字符串变量放在后面{current_tag="student";stu=new Student();}else if("name".equals(qName)){current_tag="name";}else if("location".equals(qName)){current_tag="location";}else if("grade".equals(qName)){current_tag="grade";}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if("location".equals(current_tag ) ){stu.setLocation(new String(ch,start,length));}else if("grade".equals(current_tag)){stu.setGrade(Integer.parseInt(new String(ch,start,length)));}elseif("name".equals(current_tag)){stu.setName(new String(ch,start,length));}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {if("student".equals(qName)){list.add(stu);stu=null;}current_tag=null; //这句话千万不可省略,省略会报空指针异常, //因为遇到结束标签时,stu被置为null,然后遇到空白文本,stu调用set方法,报错}}
Student.java
package com.student;public class Student {private String name;private String location;private int grade;public Student(String na,String lo,int gr){name=na;location=lo;grade=gr;}public Student(){}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public int getGrade() {return grade;}public void setGrade(int grade) {this.grade = grade;}}
这种解析方式,在实际开发过程中比较常用应当掌握。
0 0
- SAX解析
- SAX解析
- SAX解析
- SAX解析
- SAX解析
- SAX解析
- SAX解析
- SAX解析
- SAX 解析
- sax解析
- SAX解析
- SAX解析
- SAX解析
- sax解析
- SAX解析
- SAX解析
- SAX解析
- sax解析
- linux下c编程进程通信-管道与信号
- Flask Web 开发 用户认证_2
- DBCP连接池配置详解
- libsvm-matlab实例代码
- emacs24 plugins 配置
- SAX解析
- shell中正则表达式的使用
- Docker常用操作汇总
- Service
- 树的子结构
- QT5 +VS2010 SP1 解决中文乱码问题
- OPENCV级联分类器样本创建opencv_createsamples参数学习笔记
- APP开发实战133-APP版本管理
- Python数据分析工具