SAX方式解析XML - GOOGLE CODE.docx_第1页
SAX方式解析XML - GOOGLE CODE.docx_第2页
SAX方式解析XML - GOOGLE CODE.docx_第3页
SAX方式解析XML - GOOGLE CODE.docx_第4页
SAX方式解析XML - GOOGLE CODE.docx_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/sxyx2008Sax、pull方式解析Xmlsax方式解析xmlxml文件:张三男181987-06-08好学生李四女181987-06-08好学生小王男181987-06-08好学生小张男181987-06-08好学生小明男181987-06-08好学生Xml对应的实体beanpackage com.parsexml.entity;public class Student private int id;private int group;private String name;private String sex;private int age;private String email;private String memo;private String birthday;public int getId() return id;public void setId(int id) this.id = id;public int getGroup() return group;public void setGroup(int group) this.group = group;public String getName() return name;public void setName(String name) = name;public String getSex() return sex;public void setSex(String sex) this.sex = sex;public int getAge() return age;public void setAge(int age) this.age = age;public String getEmail() return email;public void setEmail(String email) this.email = email;public String getMemo() return memo;public void setMemo(String memo) this.memo = memo;public String getBirthday() return birthday;public void setBirthday(String birthday) this.birthday = birthday;sax方式解析代码package com.parsexml;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;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.helpers.DefaultHandler;import com.parsexml.entity.Student;/* * 功能描述:采用sax方式解析XML * * author sxyx2008 * */public class SaxParseXml extends DefaultHandler/存放遍历集合private List list;/构建Student对象private Student student;/用来存放每次遍历后的元素名称(节点名称)private String tagName;public List getList() return list;public void setList(List list) this.list = list;public Student getStudent() return student;public void setStudent(Student student) this.student = student;public String getTagName() return tagName;public void setTagName(String tagName) this.tagName = tagName;/只调用一次 初始化list集合 Overridepublic void startDocument() throws SAXException list=new ArrayList();/调用多次 开始解析Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException if(qName.equals(student)student=new Student();/获取student节点上的id属性值student.setId(Integer.parseInt(attributes.getValue(0);/获取student节点上的group属性值student.setGroup(Integer.parseInt(attributes.getValue(1);this.tagName=qName;/调用多次 Overridepublic void endElement(String uri, String localName, String qName)throws SAXException if(qName.equals(student)this.list.add(this.student);this.tagName=null;/只调用一次Overridepublic void endDocument() throws SAXException /调用多次Overridepublic void characters(char ch, int start, int length)throws SAXException if(this.tagName!=null)String date=new String(ch,start,length);if(this.tagName.equals(name)this.student.setName(date);else if(this.tagName.equals(sex)this.student.setSex(date);else if(this.tagName.equals(age)this.student.setAge(Integer.parseInt(date);else if(this.tagName.equals(email)this.student.setEmail(date);else if(this.tagName.equals(birthday)this.student.setBirthday(date);else if(this.tagName.equals(memo)this.student.setMemo(date);public static void main(String args) SAXParser parser = null;try /构建SAXParserparser = SAXParserFactory.newInstance().newSAXParser();/实例化 DefaultHandler对象SaxParseXml parseXml=new SaxParseXml();/加载资源文件 转化为一个输入流InputStream stream=SaxParseXml.class.getClassLoader().getResourceAsStream(Student.xml);/调用parse()方法parser.parse(stream, parseXml);/遍历结果List list=parseXml.getList();for(Student student:list)System.out.println(id:+student.getId()+tgroup:+student.getGroup()+tname:+student.getName()+tsex:+student.getSex()+tage:+student.getAge()+temail:+student.getEmail()+tbirthday:+student.getBirthday()+tmemo:+student.getMemo(); catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();效果图:Pull方式解析xml依赖的环境kxml2-2.3.0.jarxmlpull_1_1_3_4c.jar以上两个jar分别从以下网站下载:/ xmlpull/ kxmlxml文件:张三男181987-06-08好学生李四女181987-06-08好学生小王男181987-06-08好学生小张男181987-06-08好学生小明男181987-06-08好学生Xml对应的实体bean文件:package com.parsexml.entity;public class Student private int id;private int group;private String name;private String sex;private int age;private String email;private String memo;private String birthday;public int getId() return id;public void setId(int id) this.id = id;public int getGroup() return group;public void setGroup(int group) this.group = group;public String getName() return name;public void setName(String name) = name;public String getSex() return sex;public void setSex(String sex) this.sex = sex;public int getAge() return age;public void setAge(int age) this.age = age;public String getEmail() return email;public void setEmail(String email) this.email = email;public String getMemo() return memo;public void setMemo(String memo) this.memo = memo;public String getBirthday() return birthday;public void setBirthday(String birthday) this.birthday = birthday;Pull解析代码package com.parsexml;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import com.parsexml.entity.Student;public class PullParseXml public List PullParseXML()List list=null;Student student = null;/构建XmlPullParserFactorytry XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();/获取XmlPullParser的实例XmlPullParser xmlPullParser=pullParserFactory.newPullParser();/设置输入流 xml文件xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream(Student.xml), UTF-8);/开始int eventType=xmlPullParser.getEventType();try while(eventType!=XmlPullParser.END_DOCUMENT)String nodeName=xmlPullParser.getName();switch (eventType) /文档开始case XmlPullParser.START_DOCUMENT:list=new ArrayList();break;/开始节点case XmlPullParser.START_TAG:/判断如果其实节点为studentif(student.equals(nodeName)/实例化student对象student=new Student();/设置Id属性student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0);/设置Group属性student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1);else if(name.equals(nodeName)/设置namestudent.setName(xmlPullParser.nextText();else if(sex.equals(nodeName)/设置sexstudent.setSex(xmlPullParser.nextText();else if(age.equals(nodeName)/设置agestudent.setAge(Integer.parseInt(xmlPullParser.nextText();else if(email.equals(nodeName)/设置emailstudent.setEmail(xmlPullParser.nextText();else if(birthday.equals(nodeName)/设置birthdaystudent.setBirthday(xmlPullParser.nextText();else if(memo.equals(nodeName)/设置memo属性student

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论