序列化
- 序列化是将对象状态转换为可保存或传输的格式的过程。我们可以把对象序列化为不同的格式,比如说:JSon序列化、XML序列化、二进制序列化等等,不同的形式适应不同的业务需求。
XML序列化
- 把对象的成员变量转化为XML格式,需要使用Xml序列化器(XmlSerializer类),序列化之后的对象以XML文件的形式保存。
public class Person { private int id; private String age; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [id=" + id + ", age=" + age + ", name=" + name + "]"; } }
- Person类,对应的该类有若干实例对象:{id=0;name=“张三”;age=20},{id=1;name=“李四”;age=19},把这些对象以xml格式进行描述,即为:
<?xml version="1.0" encoding="UTF-8" standalone="true"?> <persons> <person id="0"> <name>张三</name> <age>20</age> </person> <person id="1"> <name>李四</name> <age>19</age> </person> </persons>
- 要将数据序列化,首先要做的是创建与该XML相对应的序列化器,然后将Person对象转换为上述的XML格式
关键代码如下
- 首先因为XML格式是以文件形式进行存放的,所以,应首先创建文件对象
//Environment.getExternalStorageDirectory()为文件的存放位置 File file = new File(Environment.getExternalStorageDirectory(),"Person.xml");
- 然后,打开文件的输出流:
//file为上面生成的文件对象 FileOutputStream fos = new FileOutputStream(file);
- 接着,创建与xml相对应的序列化器:
XmlSerializer serializer = Xml.newSerializer();
通过序列化器对转换进行操作:文章来源地址https://www.toymoban.com/news/detail-499468.html
- 设置文件编码方式:
serializer.setOutput(fos,"utf-8");//fos
为文件输出流对象 - 写入xml文件的开始标签:
serializer.startDocument("utf-8",true);
第一个参数设置文档的编码格式,第二个参数设置是否是一个独立的文档,一般设置为true
- 依次写入各元素(如果有多个元素则可以使用迭代的方式写入,如果标签是嵌套的,则在写入顺序上也是嵌套的):
- 写入开始标签:
serializer.startTag(null,"Persons");
这里第一个参数为xml的命名空间,没有可以用null,第二个参数为标签名 - 如果该标签有属性:
serializer.attribute(null,"id",1);
其中第一个参数为命名空间,第二个参数是属性名,第三个参数为属性值 - 写入元素内容:
serializer.text(person.getName());
该参数为实例对象中的某个属性值 - 写入结束标签:
serializer.endTag(null,"Persons");
第一个参数为命名空间,一般为null
即可,第二个参数为结束标签的标签名以这个语句表示文档的写入结束:serializer.endDocument()
- 通过
serializer.flush()
将流写入文件中
- 写入开始标签:
- 最后,关闭输出流:
fos.close()
文章来源:https://www.toymoban.com/news/detail-499468.html
到了这里,关于安卓数据存储补充:XML序列化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!