安卓序列化xml到内存卡

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

安卓序列化xml到内存卡privatevoidbackupToContact2(){try{//在SD卡上创建一个文件Filefile=newFile(Environment.getExternalStorageDirectory(),backup2.xml);FileOutputStreamfos=newFileOutputStream(file);//获取一个XmlSerializerXmlSerializerserializer=Xml.newSerializer();//设置XML的输出流以及编码格式serializer.setOutput(fos,utf-8);//设置文档的开头,以及编码格式serializer.startDocument(utf-8,true);//开始标签serializer.startTag(null,contacts);for(Contactcontact:Contacts){serializer.startTag(null,contact);//设置contact标签的id属性serializer.attribute(null,id,contact.getId()+);serializer.startTag(null,name);serializer.text(contact.getName());serializer.endTag(null,name);serializer.startTag(null,address);serializer.text(contact.getAddress());serializer.endTag(null,address);serializer.endTag(null,contact);}//一个结束标签serializer.endTag(null,contacts);//标记文档的结束serializer.endDocument();//关闭输出流fos.close();Toast.makeText(MainActivity.this,备份成功,0).show();}catch(Exceptione){e.printStackTrace();Toast.makeText(MainActivity.this,备份失败,0).show();}}XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法。在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器,下面,我将一一向大家详细介绍。SAX解析器:SAX(SimpleAPIforXML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理。在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器相应事件的状态信息,这样事件处理器才能够根据提供的事件信息来决定自己的行为。SAX解析器的优点是解析速度快,占用内存少。非常适合在Android移动设备中使用。DOM解析器:DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOMAPI遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息。由于DOM在内存中以树形结构存放,因此检索和更新效率会更高。但是对于特别大的文档,解析和加载整个文档将会很耗资源。PULL解析器:PULL解析器的运行方式和SAX类似,都是基于事件的模式。不同的是,在PULL解析过程中,我们需要自己获取产生的事件然后做相应的操作,而不像SAX那样由处理器触发一种事件的方法,执行我们的代码。PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器。以上三种解析器,都是非常实用的解析器,我将会一一介绍。我们将会使用这三种解析技术完成一项共同的任务。privateListPersonparserXmlFromLocal(){try{Filepath=newFile(Environment.getExternalStorageDirectory(),persons.xml);FileInputStreamfis=newFileInputStream(path);//获得pull解析器对象XmlPullParserparser=Xml.newPullParser();//指定解析的文件和编码格式parser.setInput(fis,utf-8);inteventType=parser.getEventType();//获得事件类型ListPersonpersonList=null;Personperson=null;Stringid;while(eventType!=XmlPullParser.END_DOCUMENT){StringtagName=parser.getName();//获得当前节点的名称switch(eventType){caseXmlPullParser.START_TAG://当前等于开始节点personif(persons.equals(tagName)){//personspersonList=newArrayListPerson();}elseif(person.equals(tagName)){//personid=1person=newPerson();id=parser.getAttributeValue(null,id);person.setId(Integer.valueOf(id));}elseif(name.equals(tagName)){//nameperson.setName(parser.nextText());}elseif(age.equals(tagName)){//ageperson.setAge(Integer.parseInt(parser.nextText()));}break;caseXmlPullParser.END_TAG:///personsif(person.equals(tagName)){//需要把上面设置好值的person对象添加到集合中personList.add(person);}break;default:break;}eventType=parser.next();//获得下一个事件类型}returnpersonList;}catch(Exceptione){e.printStackTrace();}returnnull;}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功