package cn.csdn.service;
import java.io.InputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
import cn.csdn.domain.School;
import cn.csdn.domain.Student;
import cn.csdn.domain.Teacher;
public class PullSchoolService {
public static List<School> getSchoolList(InputStream in) throws Exception{
List<School> schoolList=null;
XmlPullParser parser=Xml.newPullParser();
parser.setInput(in,"utf-8");
School school=null;
Teacher teacher=null;
Student student=null;
List<Student> studentList=null;
int eventType=parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT){
switch(eventType){
case XmlPullParser.START_DOCUMENT:
schoolList=new ArrayList<School>();
break;
case XmlPullParser.START_TAG:
if("school".equals(parser.getName())){
school=new School();
school.setLevel(parser.getAttributeValue(0));
studentList=new ArrayList<Student>();
}else if("teacherName".equals(parser.getName())){
teacher=new Teacher();
teacher.setName(parser.nextText());
}else if("teacherAge".equals(parser.getName())){
teacher.setAge(Integer.parseInt(parser.nextText()));
}else if("studentName".equals(parser.getName())){
student=new Student();
student.setName(parser.nextText());
}else if("studentAge".equals(parser.getName())){
student.setAge(Integer.parseInt(parser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if("teacher".equals(parser.getName())&&teacher!=null){
school.setTeacher(teacher);
teacher=null;
}else if("student".equals(parser.getName())&&student!=null){
studentList.add(student);
student=null;
}else if("school".equals(parser.getName())&&school!=null){
school.setStudent(studentList);
schoolList.add(school);
school=null;
studentList=null;
}
break;
}
// next方法的导致进行下一个节点的解析,同时返回下一个节点解析的事件类型代码、
eventType = parser.next();
}
return schoolList;
}
public static void writerPersonList(List<School> schoolList,Writer writer) throws Exception{
XmlSerializer serializer=Xml.newSerializer();
serializer.setOutput(writer);
//定入
serializer.startDocument("utf-8", true);
//写入根标签的起始
serializer.startTag(null, "schools");
for(School school:schoolList){
serializer.startTag(null, "school");
//添加id属性
serializer.attribute(null, "level", school.getLevel());
serializer.startTag(null, "teacher");
//老师姓名
serializer.startTag(null, "teacherName");
serializer.text(school.getTeacher().getName());
serializer.endTag(null, "teacherName");
//老师年龄
serializer.startTag(null, "teacherAge");
serializer.text(school.getTeacher().getAge()+"");
serializer.endTag(null, "teacherAge");
serializer.endTag(null, "teacher");
for(Student list:school.getStudent()){
serializer.startTag(null, "student");
//学生姓名
serializer.startTag(null, "studentName");
serializer.text(list.getName());
serializer.endTag(null, "studentName");
//学生年龄
serializer.startTag(null, "studentAge");
serializer.text(list.getAge()+"");
serializer.endTag(null, "studentAge");
serializer.endTag(null, "student");
}
serializer.endTag(null, "school");
}
//结束标签
serializer.endTag(null, "schools");
//结束文档的写入
serializer.endDocument();
writer.flush();
writer.close();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
android之利用SAX、DOM和Pull实现对schools.xml的解析
共40个文件
class:13个
java:9个
png:6个
需积分: 3 47 下载量 9 浏览量
2011-12-17
22:38:23
上传
评论
收藏 42KB 7Z 举报
温馨提示
利用SAX、DOM和Pull实现对schools.xml的解析,并进行单元测试 利用Pull实现schools.xml的创建
资源推荐
资源详情
资源评论
收起资源包目录
SchoolXml.7z (40个子文件)
SchoolXml
.project 845B
project.properties 361B
proguard.cfg 1KB
src
schools.xml 977B
cn
csdn
service
DomSchoolService.java 3KB
SAXPersonService.java 733B
SchoolHandler.java 3KB
PullSchoolService.java 4KB
domain
Teacher.java 587B
School.java 943B
Student.java 587B
activity
SchoolXmlActivity.java 2KB
AndroidManifest.xml 933B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 398B
values
strings.xml 184B
assets
gen
cn
csdn
activity
R.java 645B
.classpath 364B
bin
resources.ap_ 10KB
classes
schools.xml 977B
cn
csdn
service
PullSchoolService.class 4KB
SchoolHandler.class 3KB
DomSchoolService.class 4KB
SAXPersonService.class 1KB
domain
Teacher.class 1KB
Student.class 1KB
School.class 2KB
activity
R$layout.class 388B
R$drawable.class 401B
R$attr.class 334B
SchoolXmlActivity.class 4KB
R.class 477B
R$string.class 421B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
classes.dex 13KB
SchoolXml.apk 19KB
共 40 条
- 1
资源评论
任海丽
- 粉丝: 2001
- 资源: 47
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功