当前位置: 首页 > news >正文

android xml文件读写,向android系统下sdcard中写入一个xml文件和读取一个xml文件

/*

*说明:这个代码是直接向android系统下sdcard中写入一个xml文件和读取一个xml文件*/

例子:---文件名称:itcast.xml

allen

36

james

25

/*

*添加权限

*    

*/

//正文

/**

* 写xml文件到本地

* 实体person类 (id name age)

*/

private void writeXmlToLocal() {

List personList = getPersonList();

// 获得序列化对象

XmlSerializer serializer = Xml.newSerializer();

try {

File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");

FileOutputStream fos = new FileOutputStream(path);

// 指定序列化对象输出的位置和编码

serializer.setOutput(fos, "utf-8");

serializer.startDocument("utf-8", true); // 写开始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>

//null 命名空间

serializer.startTag(null, "persons");  //

for (Person person : personList) {

// 开始写人

serializer.startTag(null, "person"); //

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

// 写名字

serializer.startTag(null, "name");  //

serializer.text(person.getName());

serializer.endTag(null, "name");  //

// 写年龄

serializer.startTag(null, "age");  //

serializer.text(String.valueOf(person.getAge()));

serializer.endTag(null, "age");  //

serializer.endTag(null, "person"); //

}

serializer.endTag(null, "persons");   //

serializer.endDocument();  // 结束

} catch (Exception e) {

e.printStackTrace();

}

}

//解析xml文件

private List parserXmlFromLocal() {

try {

File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");

FileInputStream fis = new FileInputStream(path);

// 获得pull解析器对象

XmlPullParser parser = Xml.newPullParser();

// 指定解析的文件和编码格式

parser.setInput(fis, "utf-8");

int eventType = parser.getEventType();   // 获得事件类型

List personList = null;

Person person = null;

String id;

while(eventType != XmlPullParser.END_DOCUMENT) {

String tagName = parser.getName(); // 获得当前节点的名称

switch (eventType) {

case XmlPullParser.START_TAG:   // 当前等于开始节点 

if("persons".equals(tagName)) { //

personList = new ArrayList();

} else if("person".equals(tagName)) { //

person = new Person();

id = parser.getAttributeValue(null, "id");

person.setId(Integer.valueOf(id));

} else if("name".equals(tagName)) { //

person.setName(parser.nextText());

} else if("age".equals(tagName)) { //

person.setAge(Integer.parseInt(parser.nextText()));

}

break;

case XmlPullParser.END_TAG:  //

if("person".equals(tagName)) {

// 需要把上面设置好值的person对象添加到集合中

personList.add(person);

}

break;

default:

break;

}

eventType = parser.next();  // 获得下一个事件类型

}

return personList;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

相关文章:

  • Android实现蝴蝶动画,抖音蝴蝶特效怎么弄的?抖音最近很火的蝴蝶特效制作|安卓手机给视频添加蝴蝶特效...
  • 身为开发人员的您,准备好迎接Widows Mobile 6了吗?
  • android 指纹识别驱动 win10,win10怎么添加指纹识别?Win10 Windows Hello指纹登录设置教程...
  • MEDC 2007 倒计时
  • miui 7对应android系统,小米说MIUI 7和Android版本没有对应关系 你买账吗?
  • android接收富文本推送,iOS10富文本推送--NotificationServiceExtension
  • 围绕EMF探索(1)之存储和查询
  • android888是什么文件夹,Android资源文件及文件夹介绍
  • MEDC2007悉尼站略影-期待MEDCing之(一)
  • android 各别控件缩放,[翻译]Android单手指缩放-第二部分(Android one finger zoom tutorial – Part 2)...
  • 终于见到了马云;杭州——梦想的家园
  • notepad html 自动格式化代码,notepad++格式化html代码
  • MEDC上想看到的新技术
  • 简报a4纸的html页面,简报模板
  • web集群服务的负载均衡方案选择与实现
  • 【RocksDB】TransactionDB源码分析
  • 78. Subsets
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • JavaScript新鲜事·第5期
  • Map集合、散列表、红黑树介绍
  • mockjs让前端开发独立于后端
  • MySQL的数据类型
  • Nodejs和JavaWeb协助开发
  • Node项目之评分系统(二)- 数据库设计
  • Odoo domain写法及运用
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 删除表内多余的重复数据
  • 使用 Docker 部署 Spring Boot项目
  • 用Canvas画一棵二叉树
  • 转载:[译] 内容加速黑科技趣谈
  • 阿里云ACE认证之理解CDN技术
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​Linux·i2c驱动架构​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (力扣题库)跳跃游戏II(c++)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)大型网站的系统架构
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .cfg\.dat\.mak(持续补充)
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net FrameWork简介,数组,枚举
  • .NET 的程序集加载上下文
  • .NET 中的轻量级线程安全
  • 。Net下Windows服务程序开发疑惑
  • /3GB和/USERVA开关
  • /usr/bin/env: node: No such file or directory