Pull 解析相同Tag标签的XML文件

需要解析的XML格式 在这里, 有两个name相同的标签,
解析的时候,我们不能用 pull.next()方法,这个在4.0的时候, 并不能推到下一个标签。我们需要用pull.nextTag(),方法,他这个能往下一个标签执行。 到最后结束的时候, 我们需要在 end_document中直接退出, 按常规的,他会报 end_document is null 。 为什么会这样,不清楚。 具体解析看代码:

package com.demo.thread;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.content.Context;
import android.util.Xml;

import com.demo.R;
import com.demo.bean.School;
import com.demo.bean.Student;

public class XmlPullThread extends Thread{
private Context context;
public XmlPullThread(Context context){
this.context = context;
}
@Override
public void run() {
super.run();
InputStream in = context.getResources().openRawResource(R.raw.test);
getSchoolData(in);
}

public School getSchoolData(InputStream in){
try{
School school = null;
Student student = null;
String tageName = null;
List studenList = null;
XmlPullParser pull = Xml.newPullParser();
pull.setInput(in,"UTF-8");
int event = pull.getEventType();
String currentTage = null;
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_TAG:
tageName = pull.getName();
if ("school".equals(tageName)) {
school = new School();
studenList = new ArrayList();
currentTage = "school";
}else if ("name".equals(tageName)) {
if("school".equals(currentTage)){
school.setName(pull.nextText());
}else if("student".equals(currentTage)){
student.setName(pull.nextText());
}
}else if ("student".equals(tageName)) {
student = new Student();
currentTage = "student";
}else if ("sex".equals(tageName)) {
student.setSex(pull.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("student".equals(pull.getName())) {
studenList.add(student);
student = null;
}else if("school".equals(pull.getName())){
school.setStudenList(studenList);
System.out.println(school.getStudenList().size()")
return school;
}
break;
default:
break;
}
event = pull.nextTag();// 进入下一个元素并触发相应事件,如果用next 的话,4.0并不会指到下一个标签。
}
return school;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}
通过设置 当前的大的类Tag的值,来获取相同Tag中不同的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


xml怎么加入图片路径
rss源错误怎么解决
文件后缀xml是什么意思
xml格式电子发票怎么获取
xml格式是什么意思
rss是什么意思啊
xml格式电子发票怎么打开
rss订阅源是什么意思
rss源是什么
xml注释怎么写
php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类