博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓系列三(使用pull 方式解析xml文件)
阅读量:7216 次
发布时间:2019-06-29

本文共 2329 字,大约阅读时间需要 7 分钟。

hot3.png

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlSerializer;

import android.annotation.SuppressLint;

import android.util.Xml;

import com.example.domain.Person;

/**

 * wesley

 * @version 

 * @date 2015年1月26日 上午11:32:09

 * 

 */

public class XmlService {

/**

* 读取数据

* xml 要读取的数据

*

* @throws Exception

*/

@SuppressLint("UseValueOf") 

public static List<Person> readXml(InputStream xml) throws Exception{

List<Person> persons = null;

Person person = null;

//创建一个Pull实例

XmlPullParser pullParser = Xml.newPullParser();

//为Pull解析器设置要解析的XML数据

pullParser.setInput(xml, "UTF-8");

//得到第一个事件

int event = pullParser.getEventType();

//判断是不是文档结束事件

while(event != XmlPullParser.END_DOCUMENT){

switch (event) {

case XmlPullParser.START_DOCUMENT:

persons = new ArrayList<Person>();

break;

case XmlPullParser.START_TAG:

if("person".equals(pullParser.getName())){

int id = new Integer(pullParser.getAttributeValue(0));

person = new Person();

person.setId(id);

}

if("name".equals(pullParser.getName())){

String name = pullParser.nextText();

person.setName(name);

}

if("age".equals(pullParser.getName())){

int age = new Integer(pullParser.nextText());

person.setAge(age);

}

break;

case XmlPullParser.END_TAG:

if("person".equals(pullParser.getName())){

persons.add(person);

person = null;

}

break;

}

event = pullParser.next();

}

return persons;

}

/**

* 保存数据

* @param persons 数据

* @param out  输入方向

* @throws Exception

*/

public static void saveXml(List<Person> persons,OutputStream out) throws Exception{

//创建一个序列化实例

XmlSerializer serializer = Xml.newSerializer();

//设置输出流

serializer.setOutput(out, "UTF-8");

//设置文档

serializer.startDocument("UTF-8", true);

//设置开始标签

serializer.startTag(null, "persons");

for(Person person : persons){

serializer.startTag(null, "person");

serializer.attribute(null, "id", person.getId().toString());

serializer.startTag(null, "name");

serializer.text(person.getName());

serializer.endTag(null, "name");

serializer.startTag(null, "age");

serializer.text(person.getAge().toString());

serializer.endTag(null, "age");

serializer.endTag(null, "person");

}

//创建结束标签

serializer.endTag(null, "persons");

//结束文档

serializer.endDocument();

out.flush();

out.close();

}

}

转载于:https://my.oschina.net/zhengweishan/blog/371806

你可能感兴趣的文章
3689: 异或之
查看>>
字符串模式匹配KMP算法
查看>>
Android Drawable和Bitmap图片之间转换
查看>>
Debian 8 安装 Nvidia 显卡驱动
查看>>
nginx静态文件访问
查看>>
SharePoint 2013中的默认爬网文件扩展名和分析文件类型
查看>>
c#-冒泡排序-算法
查看>>
IP釋放、清除、以及刷新DNS
查看>>
第二次作业
查看>>
小知识
查看>>
安装Vmware时竟然也会报错,错误信息见图
查看>>
20179311《网络攻防实践》第三周作业
查看>>
Ural 1042 Central Heating
查看>>
css兼容问题大全
查看>>
2018-2019-1 20165324《信息安全系统设计基础》实验五
查看>>
使用 Applet 渲染 jzy3d WireSurface 波动率曲面图
查看>>
9 Web开发——springmvc自动配置原理
查看>>
截取图片
查看>>
Python学习--01入门
查看>>
MySQL联合查询语法内联、左联、右联、全联
查看>>