Android :pull方式解析XML文件

<?xml version="1.0" encoding="UTF-8" ?>

<students>

<student class="j2307">

<name>张三丰</name>

<sex>男</sex>

<age>25</age>

</student>

<student class="j2307">

<name>周芷若</name>

<sex>女</sex>

<age>23</age>

</student>

</students>

//解析xml文件 pull 方式

public void parseXML(View view){

try {

//获取xm文件流 assets文件目录下

InputStream inputStream= this.getAssets().open("student.xml");

//定义一个xml解析的pull对象

XmlPullParser xmlPullParser = Xml.newPullParser();

//把文件交给解析器

xmlPullParser.setInput(inputStream,"UTF-8");

//获取解析一行的事件

int event = xmlPullParser.getEventType();

List<Student> students =null;

Student student=null;

//控制解析器一行一行 解析xml文件 文档结束

while(event != XmlPullParser.END_DOCUMENT){

switch (event){

//文档开始

case XmlPullParser.START_DOCUMENT:

//开始解析文档 定义一个集合存储数据

students = new ArrayList<>();

break;

//打开标签

case XmlPullParser.START_TAG:

if(xmlPullParser.getName().equals("student")){

//每次解析一项就创建一个对象

student = new Student();

student.clazz = xmlPullParser.getAttributeValue(0);

}else if(xmlPullParser.getName().equals("name")){

student.name = xmlPullParser.nextText();

}else if(xmlPullParser.getName().equals("sex")){

student.sex = xmlPullParser.nextText();

}else if(xmlPullParser.getName().equals("age")){

student.age = xmlPullParser.nextText();

}

break;

//文档结束标签

case XmlPullParser.END_TAG:

if(xmlPullParser.getName().equals("student")){

//添加到集合

students.add(student);

}

break;

}

//解析下一行

event = xmlPullParser.next();

}

textView.setText(students.toString());

} catch (Exception e) {

e.printStackTrace();

Toast.makeText(getApplication(),"解析数据失败!",Toast.LENGTH_SHORT).show();

}

}

--

Student{clazz='j2307',name='张三丰',sex='男',age='25'},Student{clazz='j2307'',name='周芷若',sex='女',age='23'}

相关推荐
sunshine22 girl20 分钟前
Java学习一 环境配置2 Idea的入门使用和maven配置,项目启动脚本配置
java·maven
有点。1 小时前
*C++哈夫曼树与哈夫曼编码
java·c++·servlet
早睡早起身体好1232 小时前
用 XGrammar 约束大模型工具调用:解决参数为空的问题
android·人工智能·神经网络·机器学习·自然语言处理·vllm
CRMEB系统商城2 小时前
CRMEB标准版系统(Java)v3.1正式发布
java·spring·微信小程序·php·教育电商
写后端的胖头鱼2 小时前
【高频面试题】Java 基础类型 + 包装类 + String 互相转换
java·开发语言
weixin_460443562 小时前
企业考试系统从.NET迁移到Java+Linux:数据库迁移、接口兼容与灰度切换实践
java·煤矿培训考试系统·煤矿在线考试系统·煤矿安全培训·煤矿考试系统·一人一档
香菜TTT3 小时前
Redis的哨兵机制
java·数据库·redis
withoutfear3 小时前
IntelliJ IDEA卡顿内存分配不足和索引被频繁触发问题解决办法
java·ide·intellij-idea
大圣编蚕3 小时前
Java StringWriter 详解:从入门到实战
java·开发语言·python
大佐不会说日语~3 小时前
Android 16 下 uni-app APP 提示“网络连接失败”的排障与修复
android·uni-app