数据的保存技术

使用文档进行数据保存

问题

  1. 当对象属性发生变化时,需要增加或减少信息的写入和读取次数

  2. 信息的安全性较差

序列化和反序列化

注意:

  1. 只要是对象皆可进行序列化和反序列化操作

  2. 如果某个数据对象要进行序列化和反序列化操作,首先要将这个对象进行添加特性-序列化标识

对象数据进行序列化保存

 private void btnSavesl_Click(object sender, EventArgs e)
        {
            //首先数据封装
            objStudent student = new objStudent()
            {
                ID = int.Parse(txtID.Text.Trim()),
                Name = txtName.Text.Trim(),
                Age = int.Parse(txtAge.Text.Trim()),
                Birthday = txtBirthday.Text.Trim()
            };
            //【1】创建文件流
            FileStream fs = new FileStream("Student.stu",FileMode.Create);
            //【2】创建二进制格式化器
            BinaryFormatter formatter = new BinaryFormatter();
            //【3】调用这个格式化器的序列化方法
            formatter.Serialize(fs,student);
            fs.Close();
        }

对象数据反序列化读取

private void btnReadersl_Click(object sender, EventArgs e)
        {
            //【1】创建文件流
            FileStream fs = new FileStream("Student.stu", FileMode.Open);
            //【2】创建二进制格式化器
            BinaryFormatter formatter = new BinaryFormatter();
            //【3】调用反序列化方法
            objStudent student=(objStudent)formatter.Deserialize(fs);
            fs.Close();
            txtID.Text = student.ID.ToString();
            txtName.Text = student.Name;
            txtAge.Text = student.Age.ToString();
            txtBirthday.Text = student.Birthday;
        }

应用场合

  1. 应用程序配置信息(如果信息量较大,则使用该方法更方便读取和写入)

  2. 不需要数据库的时候,可以作为数据存取的载体

  3. WebServerice等服务中对象的传递

  4. 模块之间的数据传递

好处

  1. 对象数据的存取更方便,扩展性强

  2. 数据安全性更强

XML文件的操作

XML概念

  1. eXtensible Markup Language的缩写,可扩展标记语言

  2. 是一种可以用来创建自定义的标记语言,由万维网协会(W3C)创建,用来克服HTML的局限

  3. 从使用功能上看XML主要用于数据的存储,而HTML主要用于数据显示

XML文档格式要求

  1. 确定且唯一的根元素

  2. 开始标签和结束标签匹配

  3. 元素标签的正确嵌套

  4. 属性值要用引号括起来

  5. 同一个元素的属性不能重复

语法要求:

  1. 元素:<标签>文本内容</标签>

  2. 处理指令:< ?xml version="1.0"?>

  3. 注释:< !-- 注释内容 -->

  4. 属性:< zhangsan currentMoney="ZH¥">200< /zhangsan>

XML文件读取

XML文件的读取

  1. 创建文档对象

  2. 加载xml文档

  3. 获取根节点

  4. 遍历节点并封装数据

private void btnLoadXML_Click(object sender, EventArgs e)
        {
            XmlDocument document = new XmlDocument();
            document.Load("XMLFile.xml");
            XmlNode root = document.DocumentElement;
            List<Book> books = new List<Book>();
            foreach (XmlNode item in root.ChildNodes)
            {
                if (item.Name=="Book")
                {


                    Book book = new Book();
                    foreach (XmlNode node in item.ChildNodes)
                    {
                        switch (node.Name)
                        {
                            case "Name":
                                book.Name = node.InnerText;
                                break;
                            case "Author":
                                book.Author = node.InnerText;
                                break;
                            case "Price":
                                book.Price = node.InnerText;
                                break;
                            default:
                                break;
                        }
                    }
                    books.Add(book);
                }
            }
            dataGridView1.DataSource = books;
        }

常用对象

  1. XmlDocument对象表示XML整个文档

  2. XmlNode对象表示XML文件中的单个节点

常用属性/方法

XmlDocument:

  1. DocumentElement:获取根节点

  2. ChildNodes:获取其内部所有子节点

  3. Load():读取整个XML结构

  4. Save():保存整个XML文档

XmlNode:

  1. InnerText:获取当前节点之间的内容数据

  2. Name:当前节点的名字

  3. ChildNodes:当前节点的所有子节点

  4. AppendChild():向当前节点中添加一个字节点

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值