C#温故而知新学习系列之XML编程—XmlSerializer类把对象序列化为XML文档(五)

摘要:
前言在XMLSerializer类中,有一些方法可以将对象序列化为XML文档,并将XML文档反序列化为对象。创建类时,只要向类的属性添加自定义属性,XMLSerializer就可以读取这些属性并将它们映射到XML元素和属性中。在XMLSerializer类中,可以使用serialize()方法将对象序列化为XML文档。通过Deserialize()方法实现反序列化以进入类

  前言
    在XMLSerializer类中,包含了把对象序列化为XML文档和把XML文档反序列化为对象的方法,在创建一个类时,只要在该类的属性上加上自定义属性,XMLSerializer就可以读取这些属性,就可以将它们映射成XML元素和属性了

  在XMLSerializer类中,把对象序列化为XML文档用Serialize()方法实现,反序列化通过Deserialize()方法实现

  要对一个类进行序列化处理,可以在它的前面加上[Serializable]标签,也就是给类添加一个串行化属性,另外还存在[NonSerializable]标签,它只适用于被[Serializable]标签定义的类中的字段,作用是指示该字段不用被序列化

  我举一个书城的例子,把对象序列化为书城的XML文档

  阅读目录

  一:实现步骤

  二:运行效果

  实例

  一:实现步骤 

  1:代码文件编写

  1.1 BookShop.cs

  using System;
  using System.Collections.Generic;
  using System.Text;
  using System.Xml;
  using System.Xml.Serialization;

  namespace MyXmlSerializer
  {
      //这个标签表示整个类都需要序列化
      [Serializable()]
      [XmlRoot]
      public class BookShop
      {
          private Book _book;
          [XmlElement]
          public Book Book
          {
              get { return _book; }
              set { _book = value; }
          }
      }

      public class Book
      {
          string _booknumber = "";
          [XmlAttribute]
          public string BookNumber
          {
              get { return _booknumber; }
              set { _booknumber = value; }
          }

          string _name = "";
          [XmlElement]
          public string Name
          {
              get { return _name; }
              set { _name = value; }
          }

          string _othorname = "";
          [XmlElement]
          public string OthorName
          {
              get { return _othorname; }
              set { _othorname = value; }
          }

          string _author = "";
          [XmlElement]
          public string Author
          {
              get { return _author; }
              set { _author = value; }
          }

          string _money = "";
          [XmlElement]
          public string Money
          {
              get { return _money; }
              set { _money = value; }
          }

          string _issu = "";
          [XmlElement]
          public string Issu
          {
              get { return _issu; }
              set { _issu = value; }
          }
      }
  }

  1.2 Form1.cs

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.Xml;
  using System.Xml.Serialization;
  using System.IO;

  namespace MyXmlSerializer
  {
      public partial class Form1 : Form
      {
          public Form1()
          {
              InitializeComponent();
          }

          /// <summary>
          /// 把对象序列化为XML文档
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>
          private void btnSerialize_Click(object sender, EventArgs e)
          {
              BookShop bookshhop = new BookShop();
              bookshhop.Book = new Book();
              bookshhop.Book.BookNumber = "001";
              bookshhop.Book.Name = "《西游记》";
              bookshhop.Book.OthorName = "大唐西游传";
              bookshhop.Book.Author = "吴承恩";
              bookshhop.Book.Money = "320";
              bookshhop.Book.Issu = "清华大学出版社";
              XmlSerializer xmlserializer = new XmlSerializer(typeof(BookShop));
              TextWriter textwriter = new StreamWriter("BookShop.xml");
              xmlserializer.Serialize(textwriter, bookshhop);
              textwriter.Close();
          }

     /// <summary>
          /// 把对象集合序列化为XML文档
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>
          private void button1_Click(object sender, EventArgs e)
          {
              List<BookShop> bookshhop_list = new List<BookShop>();
              for(int i = 0; i < 3; i++)
              {
                  BookShop bookshhop = new BookShop();
                  bookshhop.Book = new Book();
                  //这里应该是从数据库取得的,实体的属性值是不一样的,为了简化,我直接赋值都一样了
                  bookshhop.Book.BookNumber = "001";
                  bookshhop.Book.Name = "《西游记》";
                  bookshhop.Book.OthorName = "大唐西游传";
                  bookshhop.Book.Author = "吴承恩";
                  bookshhop.Book.Money = "320";
                  bookshhop.Book.Issu = "清华大学出版社";
                  bookshhop_list.Add(bookshhop);
              }
              XmlSerializer xmlserializer = new XmlSerializer(typeof(List<BookShop>));
              TextWriter textwriter = new StreamWriter("BookShopList.xml");
              xmlserializer.Serialize(textwriter, bookshhop_list);
              textwriter.Close();
          }
      }
  }

  二:运行效果

  当我们单击“把对象序列化为XML文档”按钮后,就会生成一个BookShop.xml文件,我们打开这个文件,效果如下,这就是把对象序列化为XML文档,当我们单击“把对象集合序列化为XML文档”按钮,效果如下,就实现了把对象集合序列化为XML文档了。

  C#温故而知新学习系列之XML编程—XmlSerializer类把对象序列化为XML文档(五)第1张

  

  C#温故而知新学习系列之XML编程—XmlSerializer类把对象序列化为XML文档(五)第2张

  C#温故而知新学习系列之XML编程—XmlSerializer类把对象序列化为XML文档(五)第3张

免责声明:文章转载自《C#温故而知新学习系列之XML编程—XmlSerializer类把对象序列化为XML文档(五)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何优化mysql查询速度虚拟机中的center os 7 动不动不能上网了!解决方法!下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jackson实体转json时 为NULL不参加序列化的汇总

首先加入依赖<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency> 方法一、实体上使用 @JsonInclude(JsonInclude.Include....

XML和JSON数据格式

目录 XML DTD(文档类型定义) DTD实体 JSON 使用python解析JSON数据 XML和JSON的区别  XML的优缺点 JSON的优缺点 XML和JSON都是web存储和传输过程中数据的格式,其中JSON 使用比较广泛,主要用来前后端交互数据。 XML XML(Extensible Markup Language)扩展标记语言 ,是一种常...

XML外部实体(XXE)

A4-XML外部实体(XXE) 如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。 XXE影响-XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。 XML 可扩展标记语言(Extensible Markup Language,XML...

XXE漏洞复习版本

题记 昨天把很久之前看的XXE、SSRF、../../目录遍历什么的漏洞详细复习了一遍,又读出来不少新东西。来不及了,我们不能把时间浪费在迷茫上。 这次先整理XXE。XXE,外部传入的XML代码。 本来整理一半放弃了,我觉得人家写的挺好的,自己也理解了,看人家的就行,后来又觉得自己重新整一遍才好,过一遍脑子。 XXE介绍 "攻击者通过向服务器注入指定的xm...

tools的作用

1、相对布局中这个包是从哪里来。tools:context=".MainActivity"? 这些tools 属性主要针对模拟器 调试时候显示状态,编译中不起作用。 AndroidStudio会根据xml文件实时的绘制我们的布局文件的样式,但是我们也可以在Acitivity中设置布局文件的样式,因此对于一个xml布局文件,我们要知道哪个Activity会修...

tomcat部署几种方式

对Tomcat部署web应用的方式总结,常见的有以下四种:   1、【使用控制台部署】   访问Http://localhost:8080,并通过Tomcat Manager登录,进入部署界面即可。     2、【利用Tomcat自动部署】   将应用程序复制到Tomcat的 webapps路径下,Tomcat启动时将自动加载。     3、【修改Serv...