将多个定制对象序列化和反序列化为XML

本文关键字:反序列化 XML 序列化 对象 | 更新日期: 2023-09-27 18:04:08

我必须序列化多个自定义对象,如Customer, Store等。每个对象只有属性,对象之间没有关系。我必须序列化成XML,然后反序列化回自定义对象。

将多个定制对象序列化和反序列化为XML

按如下方式生成xsd:

 "$(Registry:HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Microsoft SDKs'Windows'v7.0A'@InstallationFolder)'bin'xsd.exe" /n:"$(ProjectName).Namespace" "$(ProjectDir)'<YourXML>" 

这应该是一个1倍的东西,因为你的验证将保持不变。

在项目中创建一个预构建事件,以生成如下的类:

<PreBuildEvent>
  "$(Registry:HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Microsoft SDKs'Windows'v7.0A'@InstallationFolder)'bin'xsd.exe" /n:"$(ProjectName).Namespace" "$(ProjectDir)'<YourXSD>" /c /o:"$(ProjectDir)'<GeneratedClassFolder>"
</PreBuildEvent>

然后您可以使用内建的。net XMLSerializer将您的类写入XML文件。

一个快速的google显示了这篇关于Switch on代码的文章,其中有关于如何序列化和反序列化到XML的示例。下面是一个关于对象序列化和反序列化的代码示例。

static public void SerializeToXML<_type>(_type item,string fileName)
{
  XmlSerializer serializer = new XmlSerializer( item.GetType() );
  TextWriter textWriter = new StreamWriter( fileName );
  serializer.Serialize(textWriter, item);
  textWriter.Close();
}
static _type DeserializeFromXML<_type>(string fileName)
{
   XmlSerializer deserializer = new XmlSerializer(typeof(_type));
   TextReader textReader = new StreamReader( fileName );
   _type item = (_type)deserializer.Deserialize(textReader);
   textReader.Close();
   return item;
}

您可以创建一个XSD文件来定义您的类。然后可以使用内建的。net XMLSerializer将类写入XML文件。您可以使用XSD来验证反序列化期间的输入。

或者您可以为您的类应用Serializable属性。

相关文章: