C#XML学习笔记

本文档详细介绍了XML在C#中的应用,包括XML的概述,处理XML的方法,如使用XmlDocument、XmlReader和XmlWriter。重点讨论了XML序列化和反序列化,解释了如何将.NET对象转换为XML以及从XML还原对象,通过实例演示了序列化和反序列化的过程。
摘要由CSDN通过智能技术生成

可扩展标记语言
一、概述
XML用来描述数据,它用于配置文件、源代码文档、使用SOAP的Web服务等。它在某些方面已经被JSON取代(例如,配置文件和在基于REST的Web服务中传输数据),因为该技术使用的开销更少,很容易在JavaScript中使用。然而JSON不能在今天所以使用XML的场景中代替XML.
二、处理XML概述
为了处理XML,可以使用不同的选项。
可以阅读完整的文档,使用XmlDocument类在文档对象模型(DOM)层次结构内导航。也可以使用XmlReader和XmlWriter。使用XmlReader比较复杂,但可以读取更大的文件。使用XmlDocument把完整的文档加载在内存中。使用XmlReader可以逐节点的读取。
使用Xml的另一种方式是使用System.Xml.Serialization名称空间,把.NET对象树序列化为XML,把XML数据反序列化为.NET对象。
三、序列化与反序列化
序列化是将对象状态转换为可保持或可传输的形式的过程。序列化的补集是反序列化,后者将流转换为对象。这两个过程一起保证数据易于存储和传输。
1、要序列化对象,首先需要实例化一个XmlSerializer对象,指定要序列化的对象类型,然后实例化一个流/写入器对象,以把文件写入流/文档中。最后一步是在XmlSerializer上调用Serializer()方法,给它传递流/写入器对象和要序列化的对象。
例子1:

public static void SerializeProduct()
        {
            //new products object
            var product = new Product
            {
                ProductID = 200,
                CategoryID = 100,
                Discontinued = false,
                ProductName = "Serialize Objects",
                QuantityPerUnit = "6",
                ReorderLevel = 1,
                SupplierID = 1,
                UnitPrice = 1000,
                UnitsInStock = 10,
                UnitsOnOrder = 0
            };

            FileStream stream = File.OpenWrite("product.xml");
            using (TextWriter writer = new StreamWriter(stream))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Product));
                serializer.Serialize(writer, product);
            }           
        }

例子2:

  List<Student> list = new List<Student>();
  list.Add(new Student() { Address = "地址", Age = 10, Name = "zyy", TelPhone = "" });    
  
  XmlSerializer xml = new XmlSerializer(typeof(List<Student>));
  MemoryStream Stream1 = new MemoryStream();
  xml.Serialize(Stream1, list);

  StreamReader streamReader = new StreamReader(Stream1);
  Stream1.Position = 0;
  //输出序列化后的内容
  var data = streamReader.ReadToEnd();  

2、反序列化

 StreamReader stream = new StreamReader(@"D:\new.txt");
 XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Student>));
 var list = xmlSerializer.Deserialize(stream);
 stream.Dispose();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值