【IT168技术文档】
除SOAP和二进制格式化程序外,System.Xml.dll程序集提供了第三种格式化程序:System.Xml. Serialization.XmlSerializer,与XML数据被包含在一个SOAP消息中相反,该方式可以被用来将给定对象的状态持久化为一个纯XML。使用这种类型与使用SoapFormatter或BinaryFormatter类型有一点不同。参考下面的代码:
关键的不同点是XmlSerializer类型需要你指定类型信息表示对象图中的项。注意XmlSerializer的第一个构造函数的参数定义了XML文件的根元素,而第二个参数是一个System.Type类型的数组,保存有相关子元素的元数据。如果查看新生成的CarData.xml文件,可以看到下列(简写了的)XML数据:using System.Xml.Serialization; ... static void Main(string[] args) { ... // 将对象以XML格式保存到CarData.xml文件中。 XmlSerializer xmlFormat = new XmlSerializer(typeof(JamesBondCar), new Type[] { typeof(Radio), typeof(Car) }); fStream = new FileStream("CarData.xml", FileMode.Create, FileAccess.Write, FileShare.None); xmlFormat.Serialize(fStream, jbc); fStream.Close(); ... }
<?xml version="1.0" encoding="utf-8"?> <JamesBondCar xmlns:xsi="..."> <theRadio> <hasTweeters>true</hasTweeters> <hasSubWoofers>false</hasSubWoofers> <stationPresets> <double>89.3</double> <double>105.1</double> <double>97.1</double> </stationPresets> </theRadio> <isHatchBack>false</isHatchBack> <canFly>true</canFly> <canSubmerge>false</canSubmerge> </JamesBondCar>