数据的保存技术及XML文件的操作

数据的保存技术

使用文档进行数据保存

问题

  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. 模块之间的数据传递

    https://www.cnblogs.com/jpfss/p/8397596.html

好处

  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():向当前节点中添加一个字节点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值