XML序列化可以让你使用class-friendly的方式操作XML。我们可以方便的将某个类序列化成XML字符串或文件,这里是一个例子。

Address类:

    [Serializable]
    public class Address
    {
        public Address(){}


        public string Street
        {
            get { return street; }
            set { street = value; }
        }private string street;

        public string City
        {
            get { return city; }
            set { city = value; }
        }private string city;

        public string State
        {
            get { return state; }
            set { state = value; }
        }private string state;
    }

Customer类:

    [Serializable]
    public class Customer
    {
        public Customer(){}

        public string Name
        {
            get { return name; }
            set { name = value; }
        }private string name;

        public Address Address
        {
            get { return address; }
            set { address = value; }
        }private Address address;
    }

必须在将要序列化的类上加入特性[Serializable]

生成测试数据:

        public static Customer GetGustomer()
        {
            Customer customer = new Customer();
            Address address = new Address();
            address.City = "北京";
            address.State = "丰台";
            address.Street = "马家堡西里";
            
            customer.Address = address;
            customer.Name = "BillChen";

            return customer;
        }

进行序列化操作。

        [STAThread]
        static void Main(string[] args)
        {
            Customer customer = Customers.GetGustomer();

            SerializerCustomer1(customer);
            SerializerCustomer2(customer);
            SerializerCustomer3(customer);

            Console.ReadLine();
        }

        private static void SerializerCustomer1(Customer customer)
        {
            XmlSerializer ser = new XmlSerializer(typeof(Customer));
            FileStream stream = new FileStream("test.xml", FileMode.OpenOrCreate);

            ser.Serialize( stream, customer );

            stream.Close();
        }

        private static void SerializerCustomer2(Customer customer)
        {
            XmlSerializer ser = new XmlSerializer(typeof(Customer));
            
            MemoryStream stream = new MemoryStream(100);
            ser.Serialize( stream, customer );

            stream.Position = 0;
            using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {

                Console.Write(reader.ReadToEnd());


            }
        }

        private static void SerializerCustomer3(Customer customer)
        {
            XmlSerializer ser = new XmlSerializer(typeof(Customer));
            
            MemoryStream stream = new MemoryStream(100);
            XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
            writer.Formatting = Formatting.Indented;//缩进
            ser.Serialize( writer, customer );

            stream.Position = 0;
            using(StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                string line;
                while((line = reader.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
            writer.Close();
        }

以上是序列化指定的类,及读取序列化后的XML内容的几种方式。

转载于:https://www.cnblogs.com/BillChen/archive/2005/08/27/223992.html

.Net下的XML序列化(一)相关推荐

  1. 【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )

    文章目录 一.标签闭包下创建子标签 二.使用 MarkupBuilderHelper 添加 xml 注释 三.完整代码示例 一.标签闭包下创建子标签 在上一篇博客 [Groovy]xml 序列化 ( ...

  2. XML序列化以及新增节点XMLHelper

    介绍利用XMLHelper类实现XML的新建以及反序列化类的操作,XMLHelper见最底部 1.XML新增 document = XmlHelper.CreateXmlDocument(" ...

  3. 【转】解析.Net框架下的XML编程技术

    [引自突破思维的禁忌的博客]一.前言 XML是微软.Net战略的一个重要组成部分,而且它可谓是XML Web服务的基石,所以掌握.Net框架下的XML技术自然显得非常重要了.本文将指导大家如何运用C# ...

  4. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  5. net自带二进制序列化,XML序列化和ProtoBuf序列化的压缩对比

    测试结果: ProtoBuf Length:115 BinaryFormatter Length:1177 XmlSerializer Length:814 xml length:825 做了一个各种 ...

  6. 关于XML序列化与CultureInfo

    不同的计算机系统可能有着不同的CultureInfo,例如在中文环境下日期通常这样显示03/30/2016,而在有的操作系统下它可能是这样的30.3.2016. 这样的话带来一个问题,例如在中文环境下 ...

  7. 利用.NET的XML序列化解决系统配置问题

    作者:未知  请作者速与本人联系  出自: http://blog.csdn.net/ycl111/ 在Web系统开发中,我们经常需要读取和设置一些系统配置项,常见的例如数据库连接字符串.上传路径等等 ...

  8. c语言xml序列化,C# XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...

  9. Java对象XML序列化框架-Simple2.0

    Java对象XML序列化框架-Simple2.0 Simple是一个XML序列化框架,一个Java 版本宽容的序列化框架,能够快速在Java 平台上开发XML.支持通过annotations完全配置化 ...

最新文章

  1. vue.js仿饿了么app---webpack配置项
  2. Windows2012R2 Hyper-v3.0 高可用群集安装及配置(Live Migration)
  3. 关于S/4HANA里Sales Office 和Sales Organization那些事儿
  4. 在iis中让asp.net的错误显示在远程访问电脑中
  5. 0226互联网新闻 | “多闪”上线首月iOS下载量超过500万;阿里云MWC 2019发布7款新产品...
  6. mysql如何在一个表中插入数据的同时,更新另一个表的数据?
  7. 代码还原,IDA中使用的宏
  8. mysql怎么更改gbk_把mysql 中的字符gb2312 改为gbk的方法
  9. React的调和过程(Reconciliation)
  10. Javafx中切换输入法
  11. elasticsearch清除过期数据
  12. Shopee使用虚拟信用卡绑卡测试购物教程
  13. Stealth-Persist混合内存系统中持久应用程序的体系结构支持
  14. 谈谈医疗行业数据治理的四个关键阶段【后附医院数据治理案例】
  15. NFT,不止于投机!
  16. C语言十个数中求出平均值
  17. ubuntu16.04 安装 nvidia GT730驱动
  18. 20年研发管理经验谈(十一)
  19. WebRTC音视频数据采集 六、第一节 WebRTC音视频数据采集
  20. Django+小程序打造个人助手-----2小程序项目工程目录

热门文章

  1. 路飞学城—Python爬虫实战密训班 第三章
  2. hadoop-0.20.1+120 hive-0.3.99.1+0 试用hwi(hive web interface
  3. 每个Java程序员必须知道的5个JVM命令行标志
  4. CentOS添加永久静态路由
  5. JavaScript设计模式: 接口模仿
  6. Android 学习笔记【基础扫盲篇】
  7. docker修改command_docker common command
  8. CGAffineTransform 放射变换
  9. 数据库的一些基础研究和性能探讨(触发器)
  10. cts测试之FileAccessPermissionTest