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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值