XmlSerializer 类在您将对象序列化为 XML 时为您提供完整而灵活的控制。如果您正在创建 XML Web 服务,则可以将控制序列化的属性应用于类和成员,以确保 XML 输出符合特定的架构。
例如,XmlSerializer 使您能够:
指定应将字段或属性编码为特性还是元素。
指定要使用的 XML 命名空间。
如果字段或属性名不合适,指定元素或特性的名称。
XML 序列化的另一个好处是:只要生成的 XML 流符合给定的架构,对于所开发的应用程序就没有约束。 假定有这样一个用于描述图书的架构。该架构具有标题、作者、出版商和 ISBN 编号元素。您可以开发一个以您希望的任何方式(例如,作为图书订单或作为图书清单)处理 XML 数据的应用程序。在任何一种情况下,唯一的要求是 XML 流应当符合指定的 XML 架构定义语言 (XSD) 架构。
简单类的序列化
定义一个任意公共类:
publicclass OrderForm ...{ public DateTime OrderDate; }
序列化这个类的实例:
OrderForm myObject =new OrderForm (); myObject .OrderDate=NOW; // Insert code to set properties and fields of the object. XmlSerializer mySerializer =new XmlSerializer(typeof(MySerializableClass)); // To write to a file, create a StreamWriter object. StreamWriter myWriter =new StreamWriter("myFileName.xml"); mySerializer.Serialize(myWriter, myObject); myWriter.Close();
反序列化这个类的实例:
OrderForm myObject; // Construct an instance of the XmlSerializer with the type // of object that is being deserialized. XmlSerializer mySerializer = new XmlSerializer(typeof(MySerializableClass)); // To read the file, create a FileStream. FileStream myFileStream = new FileStream("myFileName.xml", FileMode.Open); // Call the Deserialize method and cast to the object type. myObject = (MySerializableClass) ; mySerializer.Deserialize(myFileStream); MessageBox.Show(myObject.OrderDate);